##// END OF EJS Templates
Allow custom nbconvert template loaders...
Matthias BUSSONNIER -
Show More
@@ -23,7 +23,7 b' import inspect'
23 from copy import deepcopy
23 from copy import deepcopy
24
24
25 # other libs/dependencies
25 # other libs/dependencies
26 from jinja2 import Environment, FileSystemLoader
26 from jinja2 import Environment, FileSystemLoader, ChoiceLoader
27
27
28 # IPython imports
28 # IPython imports
29 from IPython.config.configurable import Configurable
29 from IPython.config.configurable import Configurable
@@ -115,7 +115,7 b' class Exporter(Configurable):'
115 transformers = None
115 transformers = None
116
116
117
117
118 def __init__(self, transformers=None, filters=None, config=None, **kw):
118 def __init__(self, transformers=None, filters=None, config=None, extra_loaders=None, **kw):
119 """
119 """
120 Public constructor
120 Public constructor
121
121
@@ -133,6 +133,9 b' class Exporter(Configurable):'
133 availlable default filters.
133 availlable default filters.
134 config : config
134 config : config
135 User configuration instance.
135 User configuration instance.
136 extra_loaders : list[of Jinja Loaders]
137 ordered list of Jinja loder to find templates. Will be tried in order
138 before the default FileSysteme ones.
136 """
139 """
137
140
138 #Call the base class constructor
141 #Call the base class constructor
@@ -143,7 +146,7 b' class Exporter(Configurable):'
143 super(Exporter, self).__init__(config=c, **kw)
146 super(Exporter, self).__init__(config=c, **kw)
144
147
145 #Standard environment
148 #Standard environment
146 self._init_environment()
149 self._init_environment(extra_loaders=extra_loaders)
147
150
148 #Add transformers
151 #Add transformers
149 self._register_transformers()
152 self._register_transformers()
@@ -283,16 +286,22 b' class Exporter(Configurable):'
283 self.register_filter(k, v)
286 self.register_filter(k, v)
284
287
285
288
286 def _init_environment(self):
289 def _init_environment(self, extra_loaders=None):
287 """
290 """
288 Create the Jinja templating environment.
291 Create the Jinja templating environment.
289 """
292 """
290 here = os.path.dirname(os.path.realpath(__file__))
293 here = os.path.dirname(os.path.realpath(__file__))
291 self.environment = Environment(
294 loaders = []
292 loader=FileSystemLoader([
295 if extra_loaders:
296 loaders.extend(extra_loaders)
297
298 loaders.append(FileSystemLoader([
293 os.path.join(here, self.template_path),
299 os.path.join(here, self.template_path),
294 os.path.join(here, self.template_skeleton_path),
300 os.path.join(here, self.template_skeleton_path),
295 ]),
301 ]))
302
303 self.environment = Environment(
304 loader= ChoiceLoader(loaders),
296 extensions=JINJA_EXTENSIONS
305 extensions=JINJA_EXTENSIONS
297 )
306 )
298
307
General Comments 0
You need to be logged in to leave comments. Login now