完整的python项目rst2html

时间:2017-11-16 18:45:04

标签: python pycharm docutils

如何配置rst2html以在完整的Python项目而不是单个文件上运行?

我习惯使用epydoc生成我的文档,但是考虑使用reStructuredText,因为它是PyCharm默认值(我知道我们也可以将PyCharm更改为epytext)

1 个答案:

答案 0 :(得分:1)

rst2html不能单独做到这一点。它是docutils.core.publish_cmdline上一个非常薄的包装器。检查它的来源:

https://github.com/docutils-mirror/docutils/blob/master/tools/rst2html.py

如果要处理多个.rst文件,可以编写一个简短的shell脚本,在每个文件上调用rst2html

或者,您可以编写Python脚本。这是一个例子:

# https://docs.python.org/3/library/pathlib.html
from pathlib import Path

# https://pypi.org/project/docutils/
import docutils.io, docutils.core

def rst2html(source_path):
    # mostly taken from
    # https://github.com/getpelican/pelican/
    pub = docutils.core.Publisher(
        source_class=docutils.io.FileInput,
        destination_class=docutils.io.StringOutput)
    pub.set_components('standalone', 'restructuredtext', 'html')
    pub.process_programmatic_settings(None, None, None)
    pub.set_source(source_path=str(source_path))
    pub.publish()

    html = pub.writer.parts['whole']

    return html

SRC_DIR = Path('.')
DST_DIR = Path('.')

for rst_file in SRC_DIR.iterdir():
    if rst_file.is_file() and rst_file.suffix == '.rst':

        html = rst2html(rst_file)

        with open(DST_DIR / (rst_file.stem + '.html'), 'w') as f:
            f.write(html)

有用的参考可能是:

http://docutils.sourceforge.net/docs/api/publisher.html