2010-09-29 32 views
14

Tôi viết blog bằng cách sử dụng rst và tôi tự chuyển đổi nó thành html và đăng nó lên.tệp py đơn để chuyển đổi rst thành html

Còn bây giờ, tôi muốn tạo ra một hệ thống blog đơn giản bằng cách sử dụng GAE,

Tôi biết docutils có thể chuyển đổi đầu tiên để html,

nhưng docutils là lớn, là có một file py duy nhất cho chuyển đổi rst sang html?

thông báo bất kỳ ai GAE?

Trả lời

6

Hãy nhìn vào các hướng dẫn cho hacking docutils. Bạn không cần toàn bộ docutils để tạo ra một html từ rst, nhưng bạn cần một người đọc, phân tích cú pháp, máy biến áp và nhà văn. Với một số nỗ lực, bạn có thể kết hợp tất cả các tệp này vào một tệp duy nhất từ ​​các tệp docutils hiện có.

19

docutils là thư viện mà bạn có thể cài đặt. Nó cũng cài đặt các công cụ giao diện người dùng để chuyển đổi từ phần còn lại sang các định dạng khác nhau bao gồm cả html.

Đây là một công cụ đơn độc đứng mà có thể được sử dụng.

Hầu hết người chuyển đổi sẽ khai thác thư viện docutils cho việc này.

1

Nếu câu trả lời của Pyfunc không phù hợp với nhu cầu của bạn, bạn có thể cân nhắc sử dụng ngôn ngữ Markdown thay thế. Cú pháp này tương tự như rst, và markdown.py là khá nhỏ và dễ sử dụng. Nó vẫn không phải là một tệp duy nhất, nhưng bạn có thể nhập tệp đó làm mô-đun vào bất kỳ tập lệnh hiện có nào mà bạn có thể có.

http://www.freewisdom.org/projects/python-markdown/

14

Trình tạo tài liệu Sphinx Thư viện Python bao gồm nhiều trình chuyển đổi dòng lệnh văn bản được cấu trúc lại (RST).

Cài đặt Sphinx:

$ pip install sphinx 

Sau đó sử dụng một trong nhiều rst2 * giúp đỡ py:

$ rst2html.py in_file.rst out_file.html 
+10

Tôi không nghĩ rằng bạn cần nhân sư đầy đủ cho việc này. rst2html.py là một phần của docutils là một phụ thuộc của sphinx. –

0

Vâng, bạn có thể thử nó với đoạn mã sau đây, việc sử dụng sẽ là:

compile_rst.py yourtext.rst

hoặc

compile_rst.py desiredname.html yourtext.rst

# compile_rst.py 

from __future__ import print_function 
from docutils import core 
from docutils.writers.html4css1 import Writer,HTMLTranslator 
import sys, os 

class HTMLFragmentTranslator(HTMLTranslator): 
    def __init__(self, document): 
     HTMLTranslator.__init__(self, document) 
     self.head_prefix = ['','','','',''] 
     self.body_prefix = [] 
     self.body_suffix = [] 
     self.stylesheet = [] 
    def astext(self): 
     return ''.join(self.body) 

html_fragment_writer = Writer() 
html_fragment_writer.translator_class = HTMLFragmentTranslator 

def reST_to_html(s): 
    return core.publish_string(s, writer = html_fragment_writer) 

if __name__ == '__main__': 
    if len(sys.argv)>1: 
     if sys.argv[1] != "": 
      rstfile = open(sys.argv[1]) 
      text = rstfile.read() 
      rstfile.close() 
      if len(sys.argv)>2: 
       if sys.argv[2] != "": 
        htmlfile = sys.argv[2] 
      else: 
       htmlfile = os.path.splitext(os.path.basename(sys.argv[1]))[0]+".html" 
      result = reST_to_html(text) 
      print(result) 
      output = open(htmlfile, "wb") 
      output.write(result) 
      output.close() 
    else: 
     print("Usage:\ncompile_rst.py docname.rst\nwhich results in => docname.html\ncompile_rst.py docname.rst desiredname.html\nwhich results in => desiredname.html") 
Các vấn đề liên quan