コード例 #1
0
def assess_source(content: str,
                  app_env: SphinxAppEnv,
                  doc_uri: str = "input.rst") -> SourceAssessResult:
    """Assess the content of an file.

    Parameters
    ----------
    content : str
        the content of the file
    filename : str
        the file path

    Returns
    -------
    SourceAssessResult

    """
    with sphinx_env(app_env):

        # TODO look at sphinx.io.read_doc function, that is used for sphinx parsing
        # (see also sphinx.testing.restructuredtext.parse, for a basic implementation)
        settings = OptionParser(components=(RSTParser, )).get_default_values()
        app_env.app.env.prepare_settings(doc_uri)
        settings.env = app_env.app.env
        doc_warning_stream = StringIO()
        settings.warning_stream = doc_warning_stream
        settings.report_level = 2  # warning
        settings.halt_level = 4  # severe
        # The level at or above which `SystemMessage` exceptions
        # will be raised, halting execution.

        document, reporter = new_document(doc_uri, settings=settings)

        parser = RSTParserCustom(inliner=InlinerLSP(doc_text=content))
        try:
            parser.parse(content, document)
        except SystemMessage:
            pass

        transform = LSPTransform(document)
        transform.apply(content)

    return SourceAssessResult(
        doctree=document,
        positions=transform.db_positions,
        references=transform.db_references,
        pending_xrefs=transform.db_pending_xrefs,
        targets=transform.db_targets,
        doc_symbols=transform.db_doc_symbols,
        linting=reporter.log_capture,
    )
コード例 #2
0
def init_settings(components):
    settings = OptionParser(components=components).get_default_values()
    settings.warning_stream = False  # Disable textual reporting
    settings.syntax_highlight = 'none'
    return settings