Анализ файлов .rst с помощью специфических для Sphinx директив - PullRequest
7 голосов
/ 14 ноября 2011

Я хотел бы иметь возможность проанализировать первый в Python на основе sphinx для дальнейшей обработки и проверки.Что-то вроде:

import sphinx
p = sphinx.parse("/path/to/file.rst")
do_something_with(p)

Кажется, что что-то возможно в documenttils с использованием documentstils.core.publish_file:

publish_file(open("/path/to/file.rst")

Но это ничего не знает о специфических директивах sphinx и т. Д...

1 Ответ

8 голосов
/ 14 ноября 2011

Вы можете использовать Расширения Sphinx , чтобы выполнить пользовательскую обработку перед окончательной записью.В документации есть очень хороший пример для начала работы, в котором обсуждаются различные ловушки, которые позволяют вам настраивать Sphinx.

В зависимости от того, что вы пытаетесь сделать, вам может потребоваться предоставить функцию do_something какАргумент обратного вызова к одному из этих событий.

doctree-resolved(app, doctree, docname)
html-page-context(app, pagename, templatename, context, doctree)

И затем вы можете расширить сфинкс следующим образом

def setup(app):
    app.connect('doctree-resolved', do_something)

Если пример из учебника по Сфинксу недостаточно подробен, у Дуга Хеллмана также есть сообщение в блоге о создании проверки орфографии для Сфинкса.Я обнаружил, что это полезная ссылка на расширение Sphinx, которое мне пришлось написать некоторое время назад.

...