##// END OF EJS Templates
move html header out
Matthias BUSSONNIER -
Show More
@@ -27,8 +27,7 b' from converters.utils import markdown2rst'
27 27
28 28 # Stdlib imports
29 29 import io
30 import os
31 from IPython.utils import path
30
32 31 from IPython.utils.traitlets import MetaHasTraits
33 32
34 33 from jinja2 import Environment, FileSystemLoader
@@ -59,50 +58,6 b' from IPython.utils.traitlets import ( Unicode, Any, List, Bool)'
59 58 class ConversionException(Exception):
60 59 pass
61 60
62 #todo move this out
63 def header_body():
64 """Return the body of the header as a list of strings."""
65
66 from pygments.formatters import HtmlFormatter
67
68 header = []
69 static = os.path.join(path.get_ipython_package_dir(),
70 'frontend', 'html', 'notebook', 'static',
71 )
72 here = os.path.split(os.path.realpath(__file__))[0]
73 css = os.path.join(static, 'css')
74 for sheet in [
75 # do we need jquery and prettify?
76 # os.path.join(static, 'jquery', 'css', 'themes', 'base',
77 # 'jquery-ui.min.css'),
78 # os.path.join(static, 'prettify', 'prettify.css'),
79 os.path.join(css, 'boilerplate.css'),
80 os.path.join(css, 'fbm.css'),
81 os.path.join(css, 'notebook.css'),
82 os.path.join(css, 'renderedhtml.css'),
83 os.path.join(css, 'style.min.css'),
84 # our overrides:
85 os.path.join(here, '..', 'css', 'static_html.css'),
86 ]:
87 try:
88 with io.open(sheet, encoding='utf-8') as f:
89 s = f.read()
90 header.append(s)
91 except IOError:
92 # new version of ipython with style.min.css, pass
93 pass
94
95 pygments_css = HtmlFormatter().get_style_defs('.highlight')
96 header.append(pygments_css)
97 return header
98
99
100
101
102
103 inlining = {}
104 inlining['css'] = header_body()
105
106 61
107 62
108 63 texenv.block_start_string = '((*'
@@ -176,6 +131,7 b' class ConverterTemplate(Configurable):'
176 131 ## for compat, remove later
177 132 self.preprocessors.append(trans.ExtractFigureTransformer(config=config))
178 133 self.preprocessors.append(trans.RevealHelpTransformer(config=config))
134 self.preprocessors.append(trans.CSSHtmlHeaderTransformer(config=config))
179 135
180 136 ##
181 137 self.env.filters['filter_data_type'] = FilterDataType(config=config)
@@ -219,7 +175,7 b' class ConverterTemplate(Configurable):'
219 175 other resources
220 176 """
221 177 nb, resources = self.process(nb)
222 return self.template.render(nb=nb, inlining=inlining), resources
178 return self.template.render(nb=nb, resources=resources), resources
223 179
224 180
225 181 def from_filename(self, filename):
@@ -228,3 +184,4 b' class ConverterTemplate(Configurable):'
228 184 return self.convert(nbformat.read(f, 'json'))
229 185
230 186
187
@@ -2,13 +2,13 b''
2 2
3 3 """
4 4
5 from __future__ import print_function, absolute_import
5 from __future__ import print_function
6
6 7
7 8 from IPython.config.configurable import Configurable
8 9 from IPython.utils.traitlets import Unicode, Bool, Dict, List
9 from .jinja_filters import GlobalConfigurable
10 10
11 class ConfigurableTransformers(GlobalConfigurable):
11 class ConfigurableTransformers(Configurable):
12 12 """ A configurable transformer """
13 13
14 14 def __init__(self, config=None, **kw):
@@ -85,6 +85,15 b' class ExtractFigureTransformer(ActivatableTransformer):'
85 85 Usefull for latex where svg will be converted to pdf before inclusion
86 86 """
87 87 )
88 display_data_priority = List(['html', 'pdf', 'svg', 'latex', 'png', 'jpg', 'jpeg' , 'text'],
89 config=True,
90 help= """
91 An ordered list of prefered output type, the first
92 encounterd will usually be used when converting discarding
93 the others.
94 """
95 )
96
88 97
89 98 #to do change this to .format {} syntax
90 99 key_tpl = Unicode('_fig_%02i.%s', config=True)
@@ -223,3 +232,62 b' class RevealHelpTransformer(ConfigurableTransformers):'
223 232 cell.metadata.slideshow.open_fragment = False
224 233 return cell,other
225 234
235
236 class CSSHtmlHeaderTransformer(ActivatableTransformer):
237
238 def __call__(self, nb, resources):
239 """Fetch and add css to the resource dict
240
241 Fetch css from IPython adn Pygment to add at the beginning
242 of the html files.
243
244 Add this css in resources in the "inlining.css" key
245 """
246 resources['inlining']= {}
247 resources['inlining']['css'] = self.header
248 return nb, resources
249
250 header= []
251
252 def __init__(self, config=None, **kw):
253 super(CSSHtmlHeaderTransformer,self).__init__(config=config, **kw)
254 if self.enabled :
255 self.regen_header()
256
257 def regen_header(self):
258 ## lazy load asa this might not be use in many transformers
259 import os
260 from IPython.utils import path
261 import io
262 from pygments.formatters import HtmlFormatter
263 header = []
264 static = os.path.join(path.get_ipython_package_dir(),
265 'frontend', 'html', 'notebook', 'static',
266 )
267 here = os.path.split(os.path.realpath(__file__))[0]
268 css = os.path.join(static, 'css')
269 for sheet in [
270 # do we need jquery and prettify?
271 # os.path.join(static, 'jquery', 'css', 'themes', 'base',
272 # 'jquery-ui.min.css'),
273 # os.path.join(static, 'prettify', 'prettify.css'),
274 os.path.join(css, 'boilerplate.css'),
275 os.path.join(css, 'fbm.css'),
276 os.path.join(css, 'notebook.css'),
277 os.path.join(css, 'renderedhtml.css'),
278 os.path.join(css, 'style.min.css'),
279 # our overrides:
280 os.path.join(here, '..', 'css', 'static_html.css'),
281 ]:
282 try:
283 with io.open(sheet, encoding='utf-8') as f:
284 s = f.read()
285 header.append(s)
286 except IOError:
287 # new version of ipython with style.min.css, pass
288 pass
289
290 pygments_css = HtmlFormatter().get_style_defs('.highlight')
291 header.append(pygments_css)
292 self.header = header
293
@@ -8,3 +8,4 b' c.ConverterTemplate.tex_environement=False'
8 8 c.NbconvertApp.fileext='html'
9 9
10 10 c.ExtractFigureTransformer.enabled = False
11 c.CSSHtmlHeaderTransformer.enabled=True
@@ -1,9 +1,5 b''
1 1 c = get_config()
2
2 load_subconfig('base_html.nbcv')
3 3
4 4 c.ConverterTemplate.template_file='fullhtml'
5 c.ConverterTemplate.tex_environement=False
6
7 c.NbconvertApp.fileext='html'
8 5
9 c.ExtractFigureTransformer.enabled = False
@@ -5,7 +5,7 b''
5 5 <head>
6 6 <meta charset="UTF-8">
7 7 <title>[{{nb.metadata.name}}]</title>
8 {% for css in inlining.css -%}
8 {% for css in resources.inlining.css -%}
9 9 <style type="text/css">
10 10 {{css}}
11 11 </style>
@@ -104,7 +104,7 b' document.write( \'<link rel="stylesheet" href="reveal/css/print/\' + ( window.loca'
104 104 <script src="reveal/lib/js/html5shiv.js"></script>
105 105 <![endif]-->
106 106
107 {% for css in inlining.css -%}
107 {% for css in resources.inlining.css -%}
108 108 <style type="text/css">
109 109 {{css}}
110 110 </style>
General Comments 0
You need to be logged in to leave comments. Login now