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)
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)
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)