def render( self, node_stack, project_info: ProjectInfo, filter_: Filter, target_handler: TargetHandler, mask_factory: MaskFactoryBase, directive_args, ) -> List[nodes.Node]: "Standard render process used by subclasses" try: object_renderer = SphinxRenderer( self.parser_factory.app, project_info, node_stack, self.state, self.state.document, target_handler, self.parser_factory.create_compound_parser(project_info), filter_, ) except ParserError as e: return format_parser_error("doxygenclass", e.error, e.filename, self.state, self.lineno, True) except FileIOError as e: return format_parser_error("doxygenclass", e.error, e.filename, self.state, self.lineno, True) context = RenderContext(node_stack, mask_factory, directive_args) return object_renderer.render(node_stack[0], context)
def handle_contents(self, project_info): try: finder = self.finder_factory.create_finder(project_info) except ParserError as e: return format_parser_error(self.name, e.error, e.filename, self.state, self.lineno, True) except FileIOError as e: return format_parser_error(self.name, e.error, e.filename, self.state, self.lineno) data_object = finder.root() target_handler = create_target_handler(self.options, project_info, self.state.document) filter_ = self.filter_factory.create_index_filter(self.options) object_renderer = SphinxRenderer( self.parser_factory.app, project_info, [data_object], self.state, self.state.document, target_handler, self.parser_factory.create_compound_parser(project_info), filter_, ) mask_factory = NullMaskFactory() context = RenderContext([data_object, RootDataObject()], mask_factory, self.directive_args) try: node_list = object_renderer.render(context.node_stack[0], context) except ParserError as e: return format_parser_error(self.name, e.error, e.filename, self.state, self.lineno, True) except FileIOError as e: return format_parser_error(self.name, e.error, e.filename, self.state, self.lineno) return node_list
def create_function_signature(self, node_stack, project_info, filter_, target_handler, mask_factory, directive_args): "Standard render process used by subclasses" try: object_renderer = SphinxRenderer( self.parser_factory.app, project_info, node_stack, self.state, self.state.document, target_handler, self.parser_factory.create_compound_parser(project_info), filter_, ) except ParserError as e: return format_parser_error("doxygenclass", e.error, e.filename, self.state, self.lineno, True) except FileIOError as e: return format_parser_error("doxygenclass", e.error, e.filename, self.state, self.lineno) context = RenderContext(node_stack, mask_factory, directive_args) node = node_stack[0] with WithContext(object_renderer, context): # this part should be kept in sync with visit_function in sphinxrenderer name = node.get_name() # assume we are only doing this for C++ declarations declaration = ' '.join([ object_renderer.create_template_prefix(node), ''.join(n.astext() for n in object_renderer.render(node.get_type())), name, node.get_argsstring() ]) parser = cpp.DefinitionParser(declaration, location=self.get_source_info(), config=self.config) ast = parser.parse_declaration('function', 'function') return str(ast)