2011-07-11 14 views
54

Estoy creando un marco en el que dejo que los desarrolladores describan su paquete utilizando reStructuredText. Quiero analizar ese reStructuredText en HTML para que pueda mostrarlo en una GUI.Analizando reStructuredText en HTML

Estoy familiarizado con la excelente Sphinx, pero nunca he analizado reStructuredText. Imaginé algo así como una función que toma una cadena de reStructuredText, y posiblemente varios argumentos adicionales, y devuelve una cadena de HTML.

Así que busqué en Docutils, que es responsable de analizar reStructuredText. No pude entender en absoluto cómo encontrar esta función. La documentación en la web es irregular. Muchas de las funciones en el módulo docutils.parsers.rst parecían estar orientadas a nombres de archivos. No tengo nombres de archivo! Solo estoy manejando cadenas.

He intentado crear un Parser y una Document y utilizando el método parse, pero apenas consigo un error sobre la configuración faltante .tab_width.

¿Alguien sabe cómo analizar reStructuredText en HTML?

Respuesta

60

intentar algo como esto:

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

publish_string acepta unas cuerdas y da salida a una cadena o se puede utilizar para obtener publish_parts partes específicas del documento html, por ejemplo,

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

Su segunda sugerencia fue la más efectiva: el '' body'' era exactamente lo que yo quería. –

+2

Debería enlazar a la documentación (http://docutils.sourceforge.net/docs/api/publisher.html#publish-parts-details)! Y, FWIW, aquí hay algunos fragmentos de código relacionados: http://code.activestate.com/recipes/193890-using-rest-restructuredtext-to-create-html-snippet/ –