##// END OF EJS Templates
Finished a rough draft of the exporters.
Jonathan Frederic -
Show More
@@ -0,0 +1,47
1 """TODO: Docstring
2 """
3
4 #-----------------------------------------------------------------------------
5 # Copyright (c) 2013, the IPython Development Team.
6 #
7 # Distributed under the terms of the Modified BSD License.
8 #
9 # The full license is in the file COPYING.txt, distributed with this software.
10 #-----------------------------------------------------------------------------
11
12 #-----------------------------------------------------------------------------
13 # Imports
14 #-----------------------------------------------------------------------------
15
16 # local import
17 import exporter
18 import transformers.csshtmlheader
19
20 #-----------------------------------------------------------------------------
21 # Classes
22 #-----------------------------------------------------------------------------
23 class HtmlExporter(exporter.Exporter):
24
25 def __init__(self, preprocessors=None, jinja_filters=None, config=None, full_html=True, **kw):
26
27 #Call base class constructor.
28 super(exporter.Exporter, self).__init__(preprocessors, jinja_filters, config, **kw)
29
30 #Set defaults
31 self.file_extension = "html"
32 self.extract_figure_transformer.enabled = True
33
34 #Load the correct template
35 if full_html:
36 self.template_file = "fullhtml"
37 else:
38 self.template_file = "basichtml"
39
40 def _register_transformers(self):
41
42 #Register the transformers of the base class.
43 super(exporter.Exporter, self)._register_transformers()
44
45 #Register latex transformer
46 self.register_transformer(transformers.csshtmlheader.CSSHtmlHeaderTransformer)
47 No newline at end of file
@@ -0,0 +1,32
1 """TODO: Docstring
2 """
3
4 #-----------------------------------------------------------------------------
5 # Copyright (c) 2013, the IPython Development Team.
6 #
7 # Distributed under the terms of the Modified BSD License.
8 #
9 # The full license is in the file COPYING.txt, distributed with this software.
10 #-----------------------------------------------------------------------------
11
12 #-----------------------------------------------------------------------------
13 # Imports
14 #-----------------------------------------------------------------------------
15
16 # local import
17 import exporter
18
19 #-----------------------------------------------------------------------------
20 # Classes
21 #-----------------------------------------------------------------------------
22 class MarkdownExporter(exporter.Exporter):
23
24 def __init__(self, preprocessors=None, jinja_filters=None, config=None, **kw):
25
26 #Call base class constructor.
27 super(exporter.Exporter, self).__init__(preprocessors, jinja_filters, config, **kw)
28
29 #Set defaults
30 self.file_extension = "md"
31 self.extract_figure_transformer.enabled = True
32 self.template_file = "markdown"
@@ -0,0 +1,34
1 """TODO: Docstring
2 """
3
4 #-----------------------------------------------------------------------------
5 # Copyright (c) 2013, the IPython Development Team.
6 #
7 # Distributed under the terms of the Modified BSD License.
8 #
9 # The full license is in the file COPYING.txt, distributed with this software.
10 #-----------------------------------------------------------------------------
11
12 #-----------------------------------------------------------------------------
13 # Imports
14 #-----------------------------------------------------------------------------
15
16 # local import
17 import exporter
18
19 #-----------------------------------------------------------------------------
20 # Classes
21 #-----------------------------------------------------------------------------
22 class PythonExporter(exporter.Exporter):
23
24 def __init__(self, preprocessors=None, jinja_filters=None, config=None, armor=False, **kw):
25
26 #Call base class constructor.
27 super(exporter.Exporter, self).__init__(preprocessors, jinja_filters, config, **kw)
28
29 #Set defaults
30 self.file_extension = "py"
31 if armor:
32 self.template_file = "python-armor"
33 else:
34 self.template_file = "python"
@@ -0,0 +1,41
1 """TODO: Docstring
2 """
3
4 #-----------------------------------------------------------------------------
5 # Copyright (c) 2013, the IPython Development Team.
6 #
7 # Distributed under the terms of the Modified BSD License.
8 #
9 # The full license is in the file COPYING.txt, distributed with this software.
10 #-----------------------------------------------------------------------------
11
12 #-----------------------------------------------------------------------------
13 # Imports
14 #-----------------------------------------------------------------------------
15
16 # local import
17 import html_exporter
18 import transformers.revealhelp
19
20 #-----------------------------------------------------------------------------
21 # Classes
22 #-----------------------------------------------------------------------------
23 class RevealExporter(html_exporter.HtmlExporter):
24
25 def __init__(self, preprocessors=None, jinja_filters=None, config=None, **kw):
26
27 #Call base class constructor.
28 super(html_exporter.HtmlExporter, self).__init__(preprocessors, jinja_filters, config, **kw)
29
30 #Set defaults
31 self.file_extension = "reveal.html"
32 self.template_file = "reveal"
33
34 def _register_transformers(self):
35
36 #Register the transformers of the base class.
37 super(html_exporter.HtmlExporter, self)._register_transformers()
38
39 #Register reveal help transformer
40 self.register_transformer(transformers.revealhelp.RevealHelpTransformer)
41 No newline at end of file
@@ -0,0 +1,51
1 """TODO: Docstring
2 """
3
4 #-----------------------------------------------------------------------------
5 # Copyright (c) 2013, the IPython Development Team.
6 #
7 # Distributed under the terms of the Modified BSD License.
8 #
9 # The full license is in the file COPYING.txt, distributed with this software.
10 #-----------------------------------------------------------------------------
11
12 #-----------------------------------------------------------------------------
13 # Imports
14 #-----------------------------------------------------------------------------
15
16 # local import
17 import exporter
18
19 #-----------------------------------------------------------------------------
20 # Classes
21 #-----------------------------------------------------------------------------
22 class RstExporter(exporter.Exporter):
23
24 def __init__(self, preprocessors=None, jinja_filters=None, config=None, **kw):
25
26 #Call base class constructor.
27 super(exporter.Exporter, self).__init__(preprocessors, jinja_filters, config, **kw)
28
29 #Set defaults
30 self.file_extension = "rst"
31 self.template_file = "rst"
32 self.extract_figure_transformer.enabled = True
33
34
35 def _register_filters(self):
36
37 #Register the filters of the base class.
38 super(exporter.Exporter, self)._register_filters()
39
40 #Add latex filters to the Jinja2 environment
41 #self.register_filter('escape_tex', filters.latex.escape_tex)
42
43
44 def _register_transformers(self):
45
46 #Register the transformers of the base class.
47 super(exporter.Exporter, self)._register_transformers()
48
49 #Register latex transformer
50 #self.register_transformer(LatexTransformer)
51
@@ -0,0 +1,48
1 """TODO: Docstring
2 """
3
4 #-----------------------------------------------------------------------------
5 # Copyright (c) 2013, the IPython Development Team.
6 #
7 # Distributed under the terms of the Modified BSD License.
8 #
9 # The full license is in the file COPYING.txt, distributed with this software.
10 #-----------------------------------------------------------------------------
11
12 #-----------------------------------------------------------------------------
13 # Imports
14 #-----------------------------------------------------------------------------
15
16 # local import
17 import latex_exporter
18
19 #-----------------------------------------------------------------------------
20 # Classes
21 #-----------------------------------------------------------------------------
22 class SphinxExporter(latex_exporter.LatexExporter):
23
24 def __init__(self, preprocessors=None, jinja_filters=None, config=None, sphinx_type="howto", **kw):
25
26 #Call base class constructor.
27 super(latex_exporter.LatexExporter, self).__init__(preprocessors, jinja_filters, config, **kw)
28
29 #Defaults
30 self.template_file = "latex_sphinx_" + sphinx_type
31
32 def _register_filters(self):
33
34 #Register the filters of the base class.
35 super(latex_exporter.LatexExporter, self)._register_filters()
36
37 #Add latex filters to the Jinja2 environment
38 #self.register_filter('escape_tex', filters.latex.escape_tex)
39
40
41 def _register_transformers(self):
42
43 #Register the transformers of the base class.
44 super(latex_exporter.LatexExporter, self)._register_transformers()
45
46 #Register latex transformer
47 #self.register_transformer(LatexTransformer)
48
@@ -14,10 +14,8 they are converted.
14 14 #-----------------------------------------------------------------------------
15 15 # Functions
16 16 #-----------------------------------------------------------------------------
17
17 18 def export_sphinx_report(nb, config=None):
18 19 pass
19 def export_sphinx_report(nb, fileName, config=None):
20 pass
21 20
22 21 #TODO: Add basic export/import utility functions.
23 __author__ = 'root'
@@ -23,6 +23,7 from __future__ import print_function, absolute_import
23 23 # Stdlib imports
24 24 import io
25 25 import os
26 import copy
26 27
27 28 # IPython imports
28 29 from IPython.config.configurable import Configurable
@@ -43,8 +44,6 import filters.pygments
43 44 import filters.ansi
44 45
45 46 import transformers.extractfigure
46 import transformers.csshtmlheader
47 import transformers.revealhelp
48 47 import transformers.coalescestreams
49 48
50 49
@@ -104,6 +103,8 class Exporter(Configurable):
104 103 #constructor for this class.
105 104 preprocessors = []
106 105
106 # Public Constructor #####################################################
107
107 108 def __init__(self, preprocessors=None, jinja_filters=None, config=None, **kw):
108 109 """ Init a new converter.
109 110
@@ -156,9 +157,12 class Exporter(Configurable):
156 157 else:
157 158 self.environment.filters[key] = user_filter
158 159
159 #Load the template file.
160 self.template = self.environment.get_template(self.template_file+self.ext)
161 160
161 #Set the default datatype priority.
162 self._set_datatype_priority(['svg', 'png', 'latex', 'jpg', 'jpeg','text'])
163
164
165 # Public methods #########################################
162 166
163 167 def from_notebook_node(self, nb):
164 168 """Export NotebookNode instance
@@ -171,6 +175,10 class Exporter(Configurable):
171 175 """
172 176
173 177 nb, resources = self._preprocess(nb)
178
179 #Load the template file.
180 self.template = self.environment.get_template(self.template_file+self.ext)
181
174 182 return self.template.render(nb=nb, resources=resources), resources
175 183
176 184
@@ -212,13 +220,17 class Exporter(Configurable):
212 220 self.environment.filters[name] = filter(config=self.config)
213 221 else:
214 222 self.environment.filters[name] = filter
223 return self.environment.filters[name]
215 224
225 # Protected and Private methods #########################################
216 226
217 227 def _register_transformers(self):
218 228 self.register_transformer(transformers.coalescestreams.coalesce_streams)
219 self.register_transformer(transformers.extractfigure.ExtractFigureTransformer)
220 self.register_transformer(transformers.revealhelp.RevealHelpTransformer)
221 self.register_transformer(transformers.csshtmlheader.CSSHtmlHeaderTransformer)
229
230 #Remember the figure extraction transformer so it can be enabled and
231 #disabled easily later.
232 self.extract_figure_transformer = self.register_transformer(transformers.extractfigure.ExtractFigureTransformer)
233 self.extract_figure_transformer.enabled = False
222 234
223 235
224 236 def _register_filters(self):
@@ -240,6 +252,11 class Exporter(Configurable):
240 252 self.register_filter('wrap', filters.strings.wrap)
241 253
242 254
255 def _set_datatype_priority(self, priority):
256 self.extract_figure_transformer.display_data_priority=copy.copy(priority)
257 self.display_data_priority=copy.copy(priority)
258
259
243 260 def _init_environment(self):
244 261 self.environment = Environment(
245 262 loader=FileSystemLoader([
@@ -64,30 +64,17 class LatexExporter(exporter.Exporter):
64 64 """
65 65
66 66 def __init__(self, preprocessors=None, jinja_filters=None, config=None, **kw):
67 """ Init a new converter.
68 67
69 config: the Configurable config object to pass around.
70
71 preprocessors: dict of **available** key/value function to run on
72 ipynb json data before conversion to extract/inline file.
73 See `transformer.py` and `ConfigurableTransformers`
74
75 set the order in which the transformers should apply
76 with the `pre_transformer_order` trait of this class
77
78 transformers registerd by this key will take precedence on
79 default one.
80
81 jinja_filters: dict of supplementary jinja filter that should be made
82 available in template. If those are of Configurable Class type,
83 they will be instanciated with the config object as argument.
84
85 user defined filter will overwrite the one available by default.
86 """
87
88 #Call the base class constructor
68 #Call base class constructor.
89 69 super(exporter.Exporter, self).__init__(preprocessors, jinja_filters, config, **kw)
90 70
71 #Set defaults
72 self.file_extension = "tex"
73 self._set_datatype_priority(['latex', 'svg', 'png', 'jpg', 'jpeg' , 'text'])
74 self.extract_figure_transformer.enabled = True
75 self.extract_figure_transformer.extra_ext_map={'svg':'pdf'}
76 self.template_file = "latex_base"
77
91 78
92 79 def _init_environment(self):
93 80 self.ext = LATEX_TEMPLATE_EXTENSION
General Comments 0
You need to be logged in to leave comments. Login now