From 24fd91f529f81e764508cc4588e2d2357ec14840 2014-12-06 00:03:05 From: Min RK Date: 2014-12-06 00:03:05 Subject: [PATCH] nbconvert --to script dispatches to custom nbconvert exporter in metadata --- diff --git a/IPython/nbconvert/exporters/script.py b/IPython/nbconvert/exporters/script.py index 2e1148a..52d2638 100644 --- a/IPython/nbconvert/exporters/script.py +++ b/IPython/nbconvert/exporters/script.py @@ -1,14 +1,33 @@ """Generic script exporter class for any kernel language""" +# Copyright (c) IPython Development Team. +# Distributed under the terms of the Modified BSD License. + from .templateexporter import TemplateExporter +from IPython.utils.traitlets import Dict + class ScriptExporter(TemplateExporter): + + _exporters = Dict() + def _template_file_default(self): return 'script' def from_notebook_node(self, nb, resources=None, **kw): langinfo = nb.metadata.get('language_info', {}) + + # delegate to custom exporter, if specified + exporter_name = langinfo.get('nbconvert_exporter') + if exporter_name and exporter_name != 'script': + self.log.debug("Loading script exporter: %s", exporter_name) + from .export import exporter_map + if exporter_name not in self._exporters: + Exporter = exporter_map[exporter_name] + self._exporters[exporter_name] = Exporter(parent=self) + exporter = self._exporters[exporter_name] + return exporter.from_notebook_node(nb, resources, **kw) + self.file_extension = langinfo.get('file_extension', '.txt') self.output_mimetype = langinfo.get('mimetype', 'text/plain') - return super(ScriptExporter, self).from_notebook_node(nb, resources, **kw)