def __init__( self, creator, *args ): Renderer.__init__( self, *args ) self.creator = creator
def __init__( self, output_defname, *args ): Renderer.__init__( self, *args ) self.output_defname = output_defname
def create_renderer_with_factory(self, data_object, renderer_factory, domain_handler): Renderer = self.renderers[data_object.__class__] if data_object.__class__ == compound.docMarkupTypeSub: creator = self.node_factory.inline if data_object.type_ == "emphasis": creator = self.node_factory.emphasis elif data_object.type_ == "computeroutput": creator = self.node_factory.literal elif data_object.type_ == "bold": creator = self.node_factory.strong elif data_object.type_ == "superscript": creator = self.node_factory.superscript elif data_object.type_ == "subscript": creator = self.node_factory.subscript elif data_object.type_ == "center": print "Warning: does not currently handle 'center' text display" elif data_object.type_ == "small": print "Warning: does not currently handle 'small' text display" return Renderer(creator, self.project_info, data_object, renderer_factory, self.node_factory, self.state, self.document, domain_handler, self.target_handler) if data_object.__class__ == compound.verbatimTypeSub: return Renderer(self.rst_content_creator, self.project_info, data_object, renderer_factory, self.node_factory, self.state, self.document, domain_handler, self.target_handler) if data_object.__class__ == compound.memberdefTypeSub: if data_object.kind == "function": Renderer = compoundrenderer.FuncMemberDefTypeSubRenderer elif data_object.kind == "enum": Renderer = compoundrenderer.EnumMemberDefTypeSubRenderer elif data_object.kind == "typedef": Renderer = compoundrenderer.TypedefMemberDefTypeSubRenderer elif data_object.kind == "variable": Renderer = compoundrenderer.VariableMemberDefTypeSubRenderer if data_object.__class__ == compound.docSimpleSectTypeSub: if data_object.kind == "par": Renderer = compoundrenderer.ParDocSimpleSectTypeSubRenderer return Renderer(self.project_info, data_object, renderer_factory, self.node_factory, self.state, self.document, domain_handler, self.target_handler)
def __init__(self, content_creator, *args): Renderer.__init__(self, *args) self.content_creator = content_creator
def __init__(self, compound_parser, *args): Renderer.__init__(self, *args) self.compound_parser = compound_parser
class DoxygenToRstRendererFactory(object): def __init__(self, node_type, type_, renderers, renderer_factory_creator, node_factory, project_info, state, document, domain_handler_factory, domain_handler, rst_content_creator, filter_, target_handler): self.node_type = node_type self.type_ = type_ self.node_factory = node_factory self.project_info = project_info self.renderers = renderers self.renderer_factory_creator = renderer_factory_creator self.state = state self.document = document self.domain_handler_factory = domain_handler_factory self.domain_handler = domain_handler self.rst_content_creator = rst_content_creator self.filter_ = filter_ self.target_handler = target_handler def create_renderer(self, parent_data_object, data_object): if not self.filter_.allow(parent_data_object, data_object): return NullRenderer() child_renderer_factory = self.renderer_factory_creator.create_child_factory( self.project_info, data_object, self) try: node_type = data_object.node_type except AttributeError, e: # Horrible hack to silence errors on filtering unicode objects # until we fix the parsing if type(data_object) == unicode: node_type = "unicode" else: raise e Renderer = self.renderers[node_type] common_args = [ self.project_info, data_object, child_renderer_factory, self.node_factory, self.state, self.document, self.domain_handler, self.target_handler ] if node_type == "docmarkup": creator = self.node_factory.inline if data_object.type_ == "emphasis": creator = self.node_factory.emphasis elif data_object.type_ == "computeroutput": creator = self.node_factory.literal elif data_object.type_ == "bold": creator = self.node_factory.strong elif data_object.type_ == "superscript": creator = self.node_factory.superscript elif data_object.type_ == "subscript": creator = self.node_factory.subscript elif data_object.type_ == "center": print "Warning: does not currently handle 'center' text display" elif data_object.type_ == "small": print "Warning: does not currently handle 'small' text display" return Renderer(creator, *common_args) if node_type == "verbatim": return Renderer(self.rst_content_creator, *common_args) if node_type == "compound": class_ = indexrenderer.CompoundTypeSubRenderer if data_object.kind == "class": class_ = indexrenderer.ClassCompoundTypeSubRenderer # For compound node types Renderer is CreateCompoundTypeSubRenderer # as defined below. This could be cleaner return Renderer(class_, *common_args) if node_type == "memberdef": if data_object.kind == "function": Renderer = compoundrenderer.FuncMemberDefTypeSubRenderer elif data_object.kind == "enum": Renderer = compoundrenderer.EnumMemberDefTypeSubRenderer elif data_object.kind == "typedef": Renderer = compoundrenderer.TypedefMemberDefTypeSubRenderer elif data_object.kind == "variable": Renderer = compoundrenderer.VariableMemberDefTypeSubRenderer elif data_object.kind == "define": Renderer = compoundrenderer.DefineMemberDefTypeSubRenderer if node_type == "param": return Renderer( parent_data_object.node_type != "templateparamlist", *common_args) if node_type == "docsimplesect": if data_object.kind == "par": Renderer = compoundrenderer.ParDocSimpleSectTypeSubRenderer return Renderer(*common_args)