Sphinx中的源级转换

时间:2015-08-10 16:21:11

标签: python python-sphinx

我正在尝试编写一个执行源级转换的sphinx扩展,但我不知道如何实际更改输出文件。

我的扩展程序如下所示:

def my_source_handler(app, docname, source):
    import re
    print 'test'
    source = [re.sub("foo", "bar", source[0])]
    return source

def setup(app):
    app.connect('source-read', my_source_handler)
    app.add_config_value('my_source_handler_include', True, False)

但是,当我将模块添加到扩展名列表build html时,它会打印'test',但实际上并没有将输出HTML文件中的“foo”更改为“bar”。

Sphinx documentation有点模糊,说:“你可以处理内容并替换这个项目来实现源代码级转换”。关于source参数。

问题是我不确定我应该如何更换源参数。

1 个答案:

答案 0 :(得分:2)

实际上经过一番挖掘后我发现了它,你应该替换source的第一个(也是唯一的)元素的内容,而不是替换source本身,所以像:

def my_source_handler(app, docname, source):
    import re
    print 'test'
    source[0] = re.sub("foo", "bar", source[0])