def main(prog_args): argv = None reader = standalone.Reader() reader_name = 'standalone' writer = Writer() writer_name = 'pseudoxml' parser = None parser_name = 'restructuredtext' settings = None settings_spec = None settings_overrides = None config_section = None enable_exit_status = 1 usage = default_usage publisher = Publisher(reader, parser, writer, settings, destination_class=BinaryFileOutput) publisher.set_components(reader_name, parser_name, writer_name) description = ('Generates OpenDocument/OpenOffice/ODF slides from ' 'standalone reStructuredText sources. ' + default_description) output = publisher.publish(argv, usage, description, settings_spec, settings_overrides, config_section=config_section, enable_exit_status=enable_exit_status)
def main(args): argv = None reader = standalone.Reader() reader_name = 'standalone' writer = EpubWriter() writer_name = 'epub2' parser = Parser() parser_name = 'restructuredtext' settings = None settings_spec = None settings_overrides = None config_section = None enable_exit_status = 1 usage = default_usage publisher = Publisher(reader, parser, writer, settings, destination_class=EpubFileOutput) publisher.set_components(reader_name, parser_name, writer_name) description = ('Generates epub books from reStructuredText sources. ' + default_description) output = publisher.publish(argv, usage, description, settings_spec, settings_overrides, config_section=config_section, enable_exit_status=enable_exit_status)
def render(self, context, mimetype, content, filename=None, rev=None): # Minimize visual impact of errors from docutils.writers import html4css1 class TracHTMLTranslator(html4css1.HTMLTranslator): """Specialized translator with unobtrusive error reporting""" def visit_system_message(self, node): paragraph = node.children.pop(0) message = escape(paragraph.astext()) if paragraph else '' backrefs = node['backrefs'] if backrefs: span = ('<span class="system-message">%s</span>' % (''.join('<a href="#%s" title="%s">?</a>' % (backref, message) for backref in backrefs))) else: span = ('<span class="system-message" title="%s">?</span>' % message) self.body.append(span) def depart_system_message(self, node): pass writer = html4css1.Writer() writer.translator_class = TracHTMLTranslator inliner = rst.states.Inliner() inliner.trac = (self.env, context) parser = rst.Parser(inliner=inliner) content = content_to_unicode(self.env, content, mimetype) # The default Reader is explicitly passed as a workaround for #11248 parts = publish_parts(content, writer=writer, parser=parser, reader=standalone.Reader(parser), settings_overrides={'halt_level': 6, 'file_insertion_enabled': 0, 'raw_enabled': 0, 'warning_stream': False}) return parts['html_body']
def render(self, context, mimetype, content, filename=None, rev=None): # Minimize visual impact of errors class TracHTMLTranslator(html4css1.HTMLTranslator): """Specialized translator with unobtrusive error reporting and some extra security features""" def __init__(self, *args, **kwargs): self._render_unsafe_content = wikisys.render_unsafe_content self._safe_schemes = set(wikisys.safe_schemes) html4css1.HTMLTranslator.__init__(self, *args, **kwargs) def visit_system_message(self, node): paragraph = node.children.pop(0) message = escape(paragraph.astext()) if paragraph else '' backrefs = node['backrefs'] if backrefs: span = ('<span class="system-message">%s</span>' % (''.join('<a href="#%s" title="%s">?</a>' % (backref, message) for backref in backrefs))) else: span = ('<span class="system-message" title="%s">?</span>' % message) self.body.append(span) def depart_system_message(self, node): pass def visit_image(self, node): html4css1.HTMLTranslator.visit_image(self, node) uri = node.attributes.get('uri') if not wikisys.is_safe_origin(uri, context.req): self.body[-1] = self.body[-1].replace( '<img ', '<img crossorigin="anonymous" ') def visit_reference(self, node): if self._is_safe_uri(node.get('refuri')): html4css1.HTMLTranslator.visit_reference(self, node) def depart_reference(self, node): if self._is_safe_uri(node.get('refuri')): html4css1.HTMLTranslator.depart_reference(self, node) def _is_safe_uri(self, uri): if self._render_unsafe_content or not uri: return True else: pos = uri.find(':') return pos < 0 or uri[0:pos] in self._safe_schemes wikisys = WikiSystem(self.env) writer = html4css1.Writer() writer.translator_class = TracHTMLTranslator inliner = rst.states.Inliner() inliner.trac = (self.env, context) parser = rst.Parser(inliner=inliner) content = content_to_unicode(self.env, content, mimetype) # The default Reader is explicitly passed as a workaround for #11248 parts = publish_parts(content, writer=writer, parser=parser, reader=standalone.Reader(parser), settings_overrides={'halt_level': 6, 'file_insertion_enabled': 0, 'raw_enabled': 0, 'warning_stream': False}) return parts['html_body']
def _to_odp_content(self, rst, xml_filename, odp_name='/tmp/out'): reader = standalone.Reader() reader_name = 'standalone' writer = rst2odp.Writer() writer_name = 'pseudoxml' parser = None parser_name = 'restructuredtext' settings = None settings_spec = None settings_overrides = None config_section = None enable_exit_status = 1 usage = default_usage publisher = Publisher( reader, parser, writer, # source=StringIO(rst), settings=settings, destination_class=rst2odp.BinaryFileOutput) publisher.set_components(reader_name, parser_name, writer_name) description = ('Generates OpenDocument/OpenOffice/ODF slides from ' 'standalone reStructuredText sources. ' + default_description) fin = open('/tmp/in.rst', 'w') fin.write(rst) fin.close() argv = ['--traceback', '/tmp/in.rst', odp_name] output = publisher.publish(argv, usage, description, settings_spec, settings_overrides, config_section=config_section, enable_exit_status=enable_exit_status) # pull content.xml out of /tmp/out z = zipwrap.Zippier(odp_name) fout = open(xml_filename, 'w') content = preso.pretty_xml(z.cat('content.xml')) fout.write(content) fout.close() return content