コード例 #1
0
def setup(app):

    cache_factory = CacheFactory()
    cache = cache_factory.create_cache()
    path_handler = PathHandler(os.sep, os.path.basename, os.path.join)
    mtimer = MTimer(os.path.getmtime)
    file_state_cache = FileStateCache(mtimer, app)
    parser_factory = DoxygenParserFactory(cache, path_handler,
                                          file_state_cache)
    matcher_factory = ItemMatcherFactory()
    item_finder_factory_creator = DoxygenItemFinderFactoryCreator(
        parser_factory, matcher_factory)
    index_parser = parser_factory.create_index_parser()
    finder_factory = FinderFactory(index_parser, item_finder_factory_creator)

    # Create a math_nodes object with a displaymath member for the displaymath
    # node so that we can treat it in the same way as the nodes & addnodes
    # modules in the NodeFactory
    math_nodes = collections.namedtuple("MathNodes", ["displaymath"])
    math_nodes.displaymath = sphinx.ext.mathbase.displaymath
    node_factory = NodeFactory(docutils.nodes, sphinx.addnodes, math_nodes)

    cpp_domain_helper = CppDomainHelper(DefinitionParser, re.sub)
    c_domain_helper = CDomainHelper()
    domain_helpers = {"c": c_domain_helper, "cpp": cpp_domain_helper}
    domain_handler_factory_creator = DomainHandlerFactoryCreator(
        node_factory, domain_helpers)

    rst_content_creator = RstContentCreator(ViewList, textwrap.dedent)
    default_domain_handler = NullDomainHandler()
    renderer_factory_creator_constructor = DoxygenToRstRendererFactoryCreatorConstructor(
        node_factory, parser_factory, default_domain_handler,
        domain_handler_factory_creator, rst_content_creator)

    # Assume general build directory is the doctree directory without the last component. We strip
    # off any trailing slashes so that dirname correctly drops the last part. This can be overriden
    # with the breathe_build_directory config variable
    build_dir = os.path.dirname(app.doctreedir.rstrip(os.sep))
    project_info_factory = ProjectInfoFactory(app.srcdir, build_dir,
                                              fnmatch.fnmatch)
    glob_factory = GlobFactory(fnmatch.fnmatch)
    filter_factory = FilterFactory(glob_factory, path_handler)
    target_handler_factory = TargetHandlerFactory(node_factory)

    root_data_object = RootDataObject()

    directive_factory = DoxygenDirectiveFactory(
        root_data_object, renderer_factory_creator_constructor, finder_factory,
        matcher_factory, project_info_factory, filter_factory,
        target_handler_factory)

    app.add_directive(
        "doxygenindex",
        directive_factory.create_index_directive_container(),
    )

    app.add_directive(
        "doxygenfunction",
        directive_factory.create_function_directive_container(),
    )

    app.add_directive(
        "doxygenstruct",
        directive_factory.create_struct_directive_container(),
    )

    app.add_directive(
        "doxygenenum",
        directive_factory.create_enum_directive_container(),
    )

    app.add_directive(
        "doxygentypedef",
        directive_factory.create_typedef_directive_container(),
    )

    app.add_directive(
        "doxygenclass",
        directive_factory.create_class_directive_container(),
    )

    app.add_directive(
        "doxygenfile",
        directive_factory.create_file_directive_container(),
    )

    app.add_directive(
        "doxygenvariable",
        directive_factory.create_variable_directive_container(),
    )

    app.add_directive(
        "doxygendefine",
        directive_factory.create_define_directive_container(),
    )

    app.add_directive(
        "autodoxygenindex",
        directive_factory.create_auto_index_directive_container(),
    )

    doxygen_handle = DoxygenProcessHandle(path_handler, subprocess.check_call,
                                          write_file)
    app.add_transform(TransformWrapper(DoxygenAutoTransform, doxygen_handle))

    app.add_transform(DoxygenTransform)

    app.add_node(DoxygenNode)

    app.add_config_value("breathe_projects", {}, True)
    app.add_config_value("breathe_default_project", "", True)
    app.add_config_value("breathe_domain_by_extension", {}, True)
    app.add_config_value("breathe_domain_by_file_pattern", {}, True)
    app.add_config_value("breathe_projects_source", {}, True)
    app.add_config_value("breathe_build_directory", '', True)

    app.add_stylesheet("breathe.css")

    app.connect("builder-inited", directive_factory.get_config_values)

    app.connect("env-get-outdated", file_state_cache.get_outdated)

    app.connect("env-purge-doc", file_state_cache.purge_doc)
コード例 #2
0
def setup(app):

    parser_factory = DoxygenParserFactory()
    matcher_factory = ItemMatcherFactory()
    item_finder_factory_creator = DoxygenItemFinderFactoryCreator(
        parser_factory, matcher_factory)
    index_parser = DoxygenIndexParser()
    finder_factory = FinderFactory(index_parser, item_finder_factory_creator)

    node_factory = NodeFactory(docutils.nodes, sphinx.addnodes)

    cpp_domain_helper = CppDomainHelper(DefinitionParser, re.sub)
    c_domain_helper = CDomainHelper()
    domain_helpers = {"c": c_domain_helper, "cpp": cpp_domain_helper}
    domain_handler_factory_creator = DomainHandlerFactoryCreator(
        node_factory, domain_helpers)

    rst_content_creator = RstContentCreator(ViewList, textwrap.dedent)
    default_domain_handler = NullDomainHandler()
    renderer_factory_creator = DoxygenToRstRendererFactoryCreator(
        node_factory, parser_factory, default_domain_handler,
        domain_handler_factory_creator, rst_content_creator)

    project_info_factory = ProjectInfoFactory(fnmatch.fnmatch)
    glob_factory = GlobFactory(fnmatch.fnmatch)
    path_handler = PathHandler(os.sep, os.path.basename)
    filter_factory = FilterFactory(glob_factory, path_handler)
    target_handler_factory = TargetHandlerFactory(node_factory)

    root_data_object = RootDataObject()

    directive_factory = DoxygenDirectiveFactory(
        root_data_object, renderer_factory_creator, finder_factory,
        matcher_factory, project_info_factory, filter_factory,
        target_handler_factory)

    app.add_directive(
        "doxygenindex",
        directive_factory.create_index_directive_container(),
    )

    app.add_directive(
        "doxygenfunction",
        directive_factory.create_function_directive_container(),
    )

    app.add_directive(
        "doxygenstruct",
        directive_factory.create_struct_directive_container(),
    )

    app.add_directive(
        "doxygenenum",
        directive_factory.create_enum_directive_container(),
    )

    app.add_directive(
        "doxygentypedef",
        directive_factory.create_typedef_directive_container(),
    )

    app.add_directive(
        "doxygenclass",
        directive_factory.create_class_directive_container(),
    )

    app.add_directive(
        "doxygenfile",
        directive_factory.create_file_directive_container(),
    )

    app.add_config_value("breathe_projects", {}, True)
    app.add_config_value("breathe_default_project", "", True)
    app.add_config_value("breathe_domain_by_extension", {}, True)
    app.add_config_value("breathe_domain_by_file_pattern", {}, True)

    app.add_stylesheet("breathe.css")

    app.connect("builder-inited", directive_factory.get_config_values)
コード例 #3
0
matcher_factory = ItemMatcherFactory()
item_finder_factory_creator = DoxygenItemFinderFactoryCreator(
    parser_factory, matcher_factory)
index_parser = DoxygenIndexParser(cache, path_handler)
finder_factory = FinderFactory(index_parser, item_finder_factory_creator)

node_factory = NodeFactory(docutils.nodes, sphinx.addnodes)

cpp_domain_helper = CppDomainHelper(DefinitionParser, re.sub)
c_domain_helper = CDomainHelper()
domain_helpers = {"c": c_domain_helper, "cpp": cpp_domain_helper}
domain_handler_factory_creator = DomainHandlerFactoryCreator(
    node_factory, domain_helpers)

rst_content_creator = RstContentCreator(ViewList, textwrap.dedent)
default_domain_handler = NullDomainHandler()

renderer_factory_creator_constructor = DoxygenToRstRendererFactoryCreatorConstructor(
    node_factory, parser_factory, default_domain_handler,
    domain_handler_factory_creator, rst_content_creator)

project_info_factory = ProjectInfoFactory(fnmatch.fnmatch)
project_info_factory.update(conf.breathe_projects,
                            conf.breathe_default_project,
                            conf.breathe_domain_by_extension,
                            conf.breathe_domain_by_file_pattern)

glob_factory = GlobFactory(fnmatch.fnmatch)
filter_factory = FilterFactory(glob_factory, path_handler)
target_handler_factory = TargetHandlerFactory(node_factory)