예제 #1
0
 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()
예제 #2
0
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
예제 #3
0
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
예제 #4
0
    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")
예제 #5
0
    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
예제 #6
0
    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")
예제 #7
0
파일: testplan.py 프로젝트: embedx/xcommon
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
예제 #8
0
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
예제 #9
0
 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()