2011-11-14 22 views
7

Chciałbym móc analizować spstsy oparte na sfinksie w Pythonie do dalszego przetwarzania i sprawdzania. Coś jak:Parsowanie plików .rst z dyrektywami specyficznymi dla Sphinksa programowo

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

Wydaje się, że coś jest możliwe w docutils wykorzystaniem docutils.core.publish_file:

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

jednak, że nic nie wie o Sphinx dyrektyw szczególnych itp wiem ...

Odpowiedz

8

Możesz użyć Sphinx Extensions, aby wykonać niestandardowe przetwarzanie przed ostatecznym zapisem. Istnieje bardzo dobry przykładowy przykład tworzenia dokumentacji, która omawia różne haki, które pozwalają dostosować Sfinksa.

W zależności od tego, co próbujesz zrobić, być może będziesz musiał podać swoją funkcję do_something jako argument oddzwaniania do jednego z tych zdarzeń.

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

A potem można rozszerzyć sfinks następująco

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

Jeżeli przykład w tutorialu Sphinx nie jest wystarczająco szczegółowa, Doug Hellmann posiada również blog post o tworzeniu sprawdzania pisowni dla Sfinksa. Okazało się, że jest to przydatne odniesienie dla rozszerzenia Sphinx, które musiałem napisać jakiś czas temu.