csshtmlheader.py
58 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
Jonathan Frederic
|
r10436 | |||
Jonathan Frederic
|
r10437 | |||
class CSSHtmlHeaderTransformer(ActivatableTransformer): | ||||
def __call__(self, nb, resources): | ||||
"""Fetch and add css to the resource dict | ||||
Fetch css from IPython adn Pygment to add at the beginning | ||||
of the html files. | ||||
Add this css in resources in the "inlining.css" key | ||||
""" | ||||
resources['inlining'] = {} | ||||
resources['inlining']['css'] = self.header | ||||
return nb, resources | ||||
header = [] | ||||
def __init__(self, config=None, **kw): | ||||
super(CSSHtmlHeaderTransformer, self).__init__(config=config, **kw) | ||||
if self.enabled : | ||||
self.regen_header() | ||||
def regen_header(self): | ||||
## lazy load asa this might not be use in many transformers | ||||
import os | ||||
from IPython.utils import path | ||||
import io | ||||
from pygments.formatters import HtmlFormatter | ||||
header = [] | ||||
static = os.path.join(path.get_ipython_package_dir(), | ||||
'frontend', 'html', 'notebook', 'static', | ||||
) | ||||
here = os.path.split(os.path.realpath(__file__))[0] | ||||
css = os.path.join(static, 'css') | ||||
for sheet in [ | ||||
# do we need jquery and prettify? | ||||
# os.path.join(static, 'jquery', 'css', 'themes', 'base', | ||||
# 'jquery-ui.min.css'), | ||||
# os.path.join(static, 'prettify', 'prettify.css'), | ||||
os.path.join(css, 'boilerplate.css'), | ||||
os.path.join(css, 'fbm.css'), | ||||
os.path.join(css, 'notebook.css'), | ||||
os.path.join(css, 'renderedhtml.css'), | ||||
os.path.join(css, 'style.min.css'), | ||||
]: | ||||
try: | ||||
with io.open(sheet, encoding='utf-8') as f: | ||||
s = f.read() | ||||
header.append(s) | ||||
except IOError: | ||||
# new version of ipython with style.min.css, pass | ||||
pass | ||||
pygments_css = HtmlFormatter().get_style_defs('.highlight') | ||||
header.append(pygments_css) | ||||
self.header = header | ||||