##// END OF EJS Templates
some improvement
Matthias BUSSONNIER -
Show More
@@ -92,7 +92,7 b' def header_body():'
92 92 header.append(pygments_css)
93 93 return header
94 94
95
95 # todo, make the key part configurable.
96 96 def _new_figure(data, fmt, count):
97 97 """Create a new figure file in the given format.
98 98
@@ -158,48 +158,55 b" texenv.filters['markdown'] = markdown"
158 158 texenv.filters['highlight'] = highlight
159 159 texenv.filters['ansi2html'] = ansi2html
160 160 texenv.filters['markdown2latex'] = markdown2latex
161 markdown2latex
162 161
162 def cell_preprocessor(function):
163 """ wrap a function to be executed on all cells of a notebook
163 164
164 def haspyout_transformer(nb,_):
165 wrapped function parameters :
166 cell : the cell
167 other : external resources
168 index : index of the cell
169 """
170 def wrappedfunc(nb,other):
165 171 for worksheet in nb.worksheets:
166 for cell in worksheet.cells:
172 for index, cell in enumerate(worksheet.cells):
173 worksheet.cells[index],other= function(cell,other,index)
174 return nb,other
175 return wrappedfunc
176
177
178
179 @cell_preprocessor
180 def haspyout_transformer(cell, other, count):
181 """
182 Add a haspyout flag to cell that have it
183
184 Easier for templating, where you can't know in advance
185 wether to write the out prompt
186
187 """
167 188 cell.type = cell.cell_type
168 189 cell.haspyout = False
169 190 for out in cell.get('outputs', []):
170 191 if out.output_type == 'pyout':
171 192 cell.haspyout = True
172 193 break
173 return nb,_
194 return cell,other
174 195
175 196
176 def outline_figure_transformer(nb,other):
177 count=0
178 for worksheet in nb.worksheets:
179 for cell in worksheet.cells:
180 cell.type = cell.cell_type
197 @cell_preprocessor
198 def outline_figure_transformer(cell,other,count):
181 199 for i,out in enumerate(cell.get('outputs', [])):
182 print('loop outputs',out.output_type)
183 200 for type in ['html', 'pdf', 'svg', 'latex', 'png', 'jpg', 'jpeg']:
184 201 if out.hasattr(type):
185 202 figname,data = _new_figure(out[type], type,count)
186 203 cell.outputs[i][type] = figname
187 out[type] = figname
188 print('set',type, 'to' ,figname)
204 out['key_'+type] = figname
189 205 other[figname] = data
190 206 count = count+1
191 207 return nb,other
192 208
193 209
194 def print_transformer(nb,other):
195 count=0
196 for worksheet in nb.worksheets:
197 for cell in worksheet.cells:
198 cell.type = cell.cell_type
199 for i,out in enumerate(cell.get('outputs', [])):
200 print(cell.outputs)
201 return nb,other
202
203 210 class ConverterTemplate(Configurable):
204 211 """ A Jinja2 base converter templates"""
205 212
@@ -210,6 +217,14 b' class ConverterTemplate(Configurable):'
210 217 to user input before code is run.
211 218 """
212 219 )
220
221 extract_figures = Bool(False,
222 config=True,
223 help= """
224 wether to remove figure data from ipynb and store them in auxiliary
225 dictionnary
226 """
227 )
213 228 #-------------------------------------------------------------------------
214 229 # Instance-level attributes that are set in the constructor for this
215 230 # class.
@@ -218,8 +233,6 b' class ConverterTemplate(Configurable):'
218 233
219 234
220 235 infile_dir = Unicode()
221 def display_data_priority_changed(self, name, old, new):
222 print('== changed', name,old,new)
223 236
224 237 def filter_data_type(self,output):
225 238 for fmt in self.display_data_priority:
@@ -242,7 +255,6 b' class ConverterTemplate(Configurable):'
242 255 self.preprocessors = preprocessors
243 256 self.preprocessors.append(haspyout_transformer)
244 257 self.preprocessors.append(outline_figure_transformer)
245 self.preprocessors.append(print_transformer)
246 258 super(ConverterTemplate, self).__init__(config=config, **kw)
247 259 self.env.filters['filter_data_type'] = self.filter_data_type
248 260 self.template = self.env.get_template(tplfile+self.ext)
@@ -36,7 +36,6 b' it introduces a new line'
36 36 \end{codeoutput}((* endblock *))
37 37
38 38 ((*- block data_png -*))
39 ++(((output.png)))++
40 39 \begin{center}
41 40 \includegraphics[width=0.7\textwidth]{(((output.png)))}
42 41 \par
General Comments 0
You need to be logged in to leave comments. Login now