Вопрос

У меня есть блог, написанный в реструктуретелетексте, который я в настоящее время должен вручную преобразовать в HTML, когда я делаю новый пост.

Я пишу новую систему блога, используя Google App Engine и необходим простой способ преобразования RST в HTML.

Я не хочу использовать docutils Потому что это слишком большой и сложный. Есть ли проще (идеально один файл Python), как я могу сделать это?

Это было полезно?

Решение

Посмотрите на инструкции для взлома документов. Отказ Вам не нужны все документы, чтобы произвести HTML от RST, но вам нужен читатель, парсер, трансформатор и писатель. С некоторыми усилиями вы можете объединить все это в один файл из существующих файлов Docutils.

Другие советы

Docutils - это библиотека, которую вы можете установить. Он также устанавливает передние инструменты для преобразования от остальных в различные форматы, включая HTML.

Это отдельный инструмент, который можно использовать.

Большинство преобразователей будут использовать библиотеку Docutils для этого.

Библиотека генератора документации SPHINX Bistance включает в себя множество реструктурированных текстовых (RST) конвертеров командной строки.

Установить Сфинкс:

$ pip install sphinx

Затем используйте одно из множества помощников RST2 * .py:

$ rst2html.py in_file.rst out_file.html

Ну, вы могли бы попробовать его со следующим куском кода, использование будет:

compile_rst.py yourtext.rst.

или

compile_rst.py yourtext.rst fitedname.html.html.

# 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")

Если ответ Pyfunc не соответствует вашим потребностям, вы можете рассмотреть возможность использования языка Markown Other. Синтаксис аналогичен RST, и Markdown.py довольно мал и прост в использовании. Это все еще не один файл, но вы можете импортировать его как модуль в любые существующие сценарии, которые могут иметь.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top