2011-07-11 25 views
54

Tôi đang tạo một khung mà tôi cho phép nhà phát triển mô tả gói của họ bằng cách sử dụng reStructuredText. Tôi muốn phân tích cú pháp reStructuredText thành HTML để tôi có thể hiển thị nó trong GUI.Phân tích cú pháp cấu trúc lại thành HTML

Tôi quen thuộc với Sphinx tuyệt vời, nhưng tôi chưa bao giờ phân tích cú pháp lại ReStructuredText. Tôi tưởng tượng một cái gì đó giống như một chức năng mà có một chuỗi reStructuredText, và có thể một số đối số bổ sung, và trả về một chuỗi các HTML.

Vì vậy, tôi đã xem xét Docutils, chịu trách nhiệm phân tích cú pháp reStructuredText. Tôi không thể hiểu được cách tìm chức năng này. Tài liệu trên web là điểm yếu. Nhiều chức năng trong mô-đun docutils.parsers.rst dường như được hướng đến tên tệp. Tôi không có tên tập tin! Tôi chỉ xử lý dây.

tôi đã cố gắng tạo ra một ParserDocument và sử dụng phương pháp parse, nhưng tôi chỉ nhận được một lỗi về một .tab_width thiết lập còn thiếu.

Có ai biết cách phân tích cú pháp ReStructuredText thành HTML không?

Trả lời

60

Hãy thử một cái gì đó như thế này:

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

publish_string chấp nhận một chuỗi và kết quả đầu ra một chuỗi hoặc bạn có thể sử dụng publish_parts để có được các phần cụ thể của tài liệu html ví dụ

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

Đề xuất thứ hai của bạn là gợi ý hiệu quả hơn: '' body'' chính là thứ tôi muốn. –

+2

Bạn nên liên kết đến tài liệu (http://docutils.sourceforge.net/docs/api/publisher.html#publish-parts-details)! Và, FWIW, đây là một số đoạn mã liên quan: http://code.activestate.com/recipes/193890-using-rest-restructuredtext-to-create-html-snippet/ –