Одиночный файл PY для преобразования RST в HTML
-
26-09-2019 - |
Вопрос
У меня есть блог, написанный в реструктуретелетексте, который я в настоящее время должен вручную преобразовать в 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 довольно мал и прост в использовании. Это все еще не один файл, но вы можете импортировать его как модуль в любые существующие сценарии, которые могут иметь.