Exemplo n.º 1
0
    def run(self):
        """Run method for the directive"""
        doc_nodes = AutoDirective.run(self)
        if 'autosummary' not in self.options:
            return doc_nodes
        self.warnings = []
        self.env = self.state.document.settings.env
        self.result = ViewList()
        documenter = self.autosummary_documenter
        grouped_documenters = documenter.get_grouped_documenters()
        if 'show-formatoptions' in self.env.config.autodoc_default_flags:
            self.options['show-formatoptions'] = True
        summ_nodes = self.autosumm_nodes(documenter, grouped_documenters)

        dn = summ_nodes.pop(documenter.fullname)
        doc_nodes = self.inject_summ_nodes(doc_nodes, summ_nodes)
        # insert the nodes directly after the paragraphs
        if self.name == 'autoclass':
            for node in dn[::-1]:
                self._insert_after_paragraphs(doc_nodes[1], node)
            dn = []
        elif self.name == 'automodule':
            # insert table before the documentation of the members
            istart = 2 if 'noindex' not in self.options else 0
            found = False
            if len(doc_nodes[istart:]) >= 2:
                for i in range(istart, len(doc_nodes)):
                    if isinstance(doc_nodes[i], sphinx.addnodes.index):
                        found = True
                        break
            if found:
                for node in dn[::-1]:
                    doc_nodes.insert(i, node)
                dn = []
        return self.warnings + dn + doc_nodes
Exemplo n.º 2
0
    def run(self):
        self.load_agx_config()
        agx_defs = self.read_agx()
        ret = list()
        old_name = self.name
        self.name = 'autofunction'
        for transform in agx_defs:
            for generator in transform['generators']:
                sec = nodes.section()
                sec['ids'].append(generator['name'])
                text = "%s" % generator['name'].replace('.', ' - ')
                gen = nodes.subtitle(text=text)
                sec.append(gen)
                ret.append(sec)

                description = generator['description']
                if description:
                    desc = nodes.paragraph(text=description)
                    sec.append(desc)

                for handler in generator['handler']:
                    name = handler['name']
                    self.arguments = [handler['package_path']]
                    doc = AutoDirective.run(self)
                    sec += doc
                    body = doc[1].children[-1]
                    position = len(doc[1].children[-1]) - 2

                    dl = nodes.definition_list()
                    body.insert(position, dl)

                    iname = name[:name.find('.')]
                    dl.append(self._definition_item('Transform', iname))

                    iname = name[name.find('.') + 1:name.rfind('.')]
                    dl.append(self._definition_item('Generator', iname))

                    scope = handler['scope']
                    if scope is not None:
                        modulename = scope['class'].__module__
                        classname = scope['class'].__name__
                        iname = "%s.%s" % (modulename, classname)
                        dl.append(self._definition_item('Scope', iname))

                    iname = handler['order']
                    dl.append(self._definition_item('Order', iname))
        self.name = old_name
        return ret