2011-07-11 13 views
54

Tworzę framework, w którym pozwolę programistom opisać ich pakiet za pomocą reStructuredText. Chcę sparsować ten reStructuredText na HTML, aby móc go pokazać w GUI.Parsowanie reStructuredText do HTML

Jestem zaznajomiony z doskonałym Sfinksem, ale nigdy nie przeanalizowałem w inny sposób reStructuredText. Wyobrażałem sobie coś w rodzaju funkcji, która pobiera ciąg reStructuredText i ewentualnie kilka dodatkowych argumentów i zwraca ciąg znaków HTML.

Więc zajrzałem do Docutils, który jest odpowiedzialny za parsowanie reStructuredText. Nie mogłem w ogóle zrozumieć, jak znaleźć tę funkcję. Dokumentacja w Internecie jest nierówna. Wiele funkcji modułu docutils.parsers.rst wydawało się być nastawionych na nazwy plików. Nie mam nazw plików! Obsługuję tylko ciągi.

Próbowałem utworzyć Parser i Document i używając metody parse, ale właśnie pojawia się błąd dotyczący brakującego ustawienia .tab_width.

Czy ktoś wie, jak analizować tekst reStructuredText na HTML?

Odpowiedz

60

spróbować czegoś takiego:

>>> from docutils.core import publish_string 
>>> publish_string("*anurag*", writer_name='html') 

publish_string akceptuje ciągi i wysyła ciąg lub użyć publish_parts aby poszczególne części dokumentu html np

>>> from docutils.core import publish_parts 
>>> print publish_parts("*anurag*", writer_name='html')['html_body'] 
<p><em>anurag</em></p> 
+5

Twoja druga sugestia była bardziej skuteczna: "Ciało" było dokładnie tym, czego chciałem. –

+2

Powinieneś połączyć się z dokumentacją (http://docutils.sourceforge.net/docs/api/publisher.html#publish-parts-details)! I FWIW, oto kilka powiązanych fragmentów kodu: http://code.activestate.com/recipes/193890-using-rest-restructuredtext-to-create-html- snippet/ –