将HTML类添加到带有扩展名的Sphinx指令中

时间:2018-07-12 12:09:25

标签: python-sphinx

我正在尝试编写一个基本扩展,以基于output指令provided by Sphinx创建一个新指令(only)。这个新指令只需要将HTML类添加到Only指令的标准结果中即可。

为此,我已经基于collapse-code-block extension尝试了以下代码。

由于docutils实际上没有文档,而且我不是一个非常有经验的python开发人员,因此我正在努力实现这一目标。

这是我尝试过的方法,除其他外,所有这些均未导致对该问题的任何真实指示:

from docutils import nodes

from sphinx.directives.other import Only


class output_node(nodes.General, nodes.Element):
    pass


class output_directive(Only):

    option_spec = Only.option_spec

    def run(self):
        env = self.state.document.settings.env

        node = output_node()
        output = Only.run(self)
        node.setup_child(output)
        node.append(output)

        return [node]


def html_visit_output_node(self, node):
    self.body.append(self.starttag(node, 'div', '', CLASS='internalonly'))


def html_depart_output_node(self, node):
    self.body.append('</div>')


def setup(app):
    app.add_node(
        output_node,
        html=(
            html_visit_output_node,
            html_depart_output_node
        )
    )
    app.add_directive('output', output_directive)

我认为它不应该比这更复杂,但这并不能解决问题。

有什么主意吗?

0 个答案:

没有答案