один файл Py для преобразования первого в HTML - PullRequest
20 голосов
/ 29 сентября 2010

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

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

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

Ответы [ 5 ]

24 голосов
/ 29 сентября 2010

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

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

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

17 голосов
/ 17 мая 2013

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

Установить Sphinx:

$ pip install sphinx

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

$ rst2html.py in_file.rst out_file.html
6 голосов
/ 30 сентября 2010

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

1 голос
/ 01 марта 2018

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

compile_rst.py yourtext.rst

или

compile_rst.py yourtext.rstwantedname.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")
0 голосов
/ 29 сентября 2010

Если ответ Pyfunc не соответствует вашим потребностям, вы можете вместо этого использовать язык разметки. Синтаксис похож на rst, а markdown.py довольно маленький и простой в использовании. Это по-прежнему не один файл, но вы можете импортировать его как модуль в любые имеющиеся у вас сценарии.

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

...