def _get_document_settings(self): """Get settings for the docutils components.""" components = (self.parser, self.reader) defaults = dict(read_config_files=False, report_level=5, halt_level=10, warning_stream=False) opt_parser = OptionParser(components=components, defaults=defaults) return opt_parser.get_default_values()
def load_rst(filename): # use the docutils option parser to get defaults for our efforts opts = OptionParser(components=(Parser, )) defaults = opts.get_default_values() # shut up the warnings defaults.warning_stream = StringIO() doc = new_document(filename, defaults) with open(filename) as f: Parser().parse(f.read(), doc) return doc
def parse_document(input_filename): with open(input_filename, 'r') as f: option_parser = OptionParser(components=(Parser, ), ) default_settings = option_parser.get_default_values() settings = default_settings.copy() settings.update({ 'report_level': 100, }, option_parser) document = new_document(input_filename, settings) parser = Parser() parser.parse(f.read(), document) return document
def write_latex_document(self, latex_document_node, all_latex_document_nodes): output_filename = latex_document_node["multilatex-filename"] variables = latex_document_node["multilatex-variables"] content = latex_document_node["multilatex-content"] options = latex_document_node["multilatex-options"] docname = latex_document_node["multilatex-docname"] doctree = latex_document_node["multilatex-doctree"] if not output_filename.endswith(".tex"): output_filename += ".tex" self.info("processing {0}...".format(output_filename), nonl=1) # for node in doctree.traverse(latex_document): # node.parent.remove(node) # parent_node = latex_document_node.parent # parent_node.remove(latex_document_node) self.post_process_images(doctree) self.info("writing...", nonl=1) docwriter = LaTeXWriter(self) option_parser = OptionParser( defaults=self.env.settings, components=(docwriter,), read_config_files=True) doctree.settings = option_parser.get_default_values() settings = doctree.settings settings.contentsname = None settings.docname = docname for name, value in options.items(): setattr(settings, name, value) settings.multilatex_options = options settings.multilatex_variables = variables settings.multilatex_content = content settings.multilatex_output_filename = output_filename settings.multilatex_all_latex_document_nodes = all_latex_document_nodes destination = FileOutput( destination_path=os.path.join(self.outdir, output_filename), encoding="utf-8") docwriter.write(doctree, destination) self.info("done")
def build_markup(self): """Build markup""" from docutils.readers import Reader internal_rst = self.prepare_rst() self.info("Changelog code:\n%s" % internal_rst) internal_rst_fh = StringInput(source=internal_rst) reader = Reader(parser_name='rst') option_parser = OptionParser() settings = option_parser.get_default_values() settings.update( dict(tab_width=3, pep_references=False, rfc_references=False, file_insertion_enabled=True), option_parser) document = reader.read(internal_rst_fh, reader.parser, settings) return document.children
def write_latex_document(self, latex_document_node, all_latex_document_nodes): output_filename = latex_document_node["multilatex-filename"] variables = latex_document_node["multilatex-variables"] content = latex_document_node["multilatex-content"] options = latex_document_node["multilatex-options"] docname = latex_document_node["multilatex-docname"] doctree = latex_document_node["multilatex-doctree"] if not output_filename.endswith(".tex"): output_filename += ".tex" self.info("processing {0}...".format(output_filename), nonl=1) # for node in doctree.traverse(latex_document): # node.parent.remove(node) # parent_node = latex_document_node.parent # parent_node.remove(latex_document_node) self.post_process_images(doctree) self.info("writing...", nonl=1) docwriter = LaTeXWriter(self) option_parser = OptionParser(defaults=self.env.settings, components=(docwriter, ), read_config_files=True) doctree.settings = option_parser.get_default_values() settings = doctree.settings settings.contentsname = None settings.docname = docname for name, value in options.items(): setattr(settings, name, value) settings.multilatex_options = options settings.multilatex_variables = variables settings.multilatex_content = content settings.multilatex_output_filename = output_filename settings.multilatex_all_latex_document_nodes = all_latex_document_nodes destination = FileOutput(destination_path=os.path.join( self.outdir, output_filename), encoding="utf-8") docwriter.write(doctree, destination) self.info("done")
def parse_testplan(source, parsed, is_spec, check_errors=False): register_testplan_directives() oldstderr = sys.stderr docutils_out = StringIO.StringIO() # sys.stderr = docutils_out valid = True reader_class = docutils.readers.get_reader_class("standalone") reader = reader_class(None, "rst") option_parser = OptionParser(components=(reader.parser, reader), defaults=[], read_config_files=1, usage="", description="") settings = option_parser.get_default_values() # try: reader.source = source reader.settings = settings reader.input = reader.source.read() reader.document = doc = reader.new_document() doc.parsed = parsed doc.check_errors = check_errors reader.parser.parse(reader.input, doc) doc.current_source = doc.current_line = None parsed = doc.parsed # except: # valid = False # parsed = None sys.stderr = oldstderr err_msg = docutils_out.getvalue() if 'feature' in parsed: for f in parsed['feature']: try: f.from_spec except: f.from_spec = is_spec return (valid and err_msg.find("ERROR") == -1), err_msg, parsed
def parse_testplan(source, parsed, is_spec,check_errors=False): register_testplan_directives() oldstderr = sys.stderr docutils_out = StringIO.StringIO() # sys.stderr = docutils_out valid = True reader_class=docutils.readers.get_reader_class("standalone") reader=reader_class(None,"rst") option_parser = OptionParser( components=(reader.parser, reader), defaults=[], read_config_files=1, usage="", description="") settings = option_parser.get_default_values() # try: reader.source = source reader.settings = settings reader.input = reader.source.read() reader.document = doc = reader.new_document() doc.parsed = parsed doc.check_errors = check_errors reader.parser.parse(reader.input, doc) doc.current_source = doc.current_line = None parsed = doc.parsed # except: # valid = False # parsed = None sys.stderr = oldstderr err_msg = docutils_out.getvalue() if 'feature' in parsed: for f in parsed['feature']: try: f.from_spec except: f.from_spec = is_spec return (valid and err_msg.find("ERROR") == -1), err_msg, parsed
def prepare_writing(self, _doc_names: set[str]) -> None: self.docwriter = HTMLWriter(self) _opt_parser = OptionParser([self.docwriter], defaults=self.env.settings, read_config_files=True) self.docsettings = _opt_parser.get_default_values()