Single py-Datei für Konvertiten rst zu html
-
26-09-2019 - |
Frage
habe ich einen Blog in reStructuredText geschrieben, die ich zur Zeit manuell konvertieren zu HTML, wenn ich einen neuen Beitrag.
Ich bin ein neues Blog-System mit Google App Engine zu schreiben und benötigen eine einfache Möglichkeit zur Umwandlung von rst zu HTML.
Ich will nicht docutils
verwenden, weil es zu groß und komplex ist. Gibt es eine einfachere (idealerweise einzelne Python-Datei), wie ich dies tun kann?
Lösung
Haben Sie einen Blick auf die Anleitung zum Hacking docutils . Sie brauchen nicht die ganzen docutils ein HTML vom ersten zu produzieren, aber Sie einen Leser, Parser, Transformator und Schriftsteller müssen. Mit einiger Mühe konnte man alle diese in eine einzelne Datei aus den vorhandenen docutils Dateien kombinieren.
Andere Tipps
docutils ist eine Bibliothek, die Sie installieren können. Es installiert auch Frontend-Tools von Rest in verschiedenen Formaten, darunter HTML zu konvertieren.
Dies ist ein eigenständiges Tool, das verwendet werden kann.
Die meisten Konverter die docutils Bibliothek für diese nutzen.
Die Bibliothek Python Sphinx Dokumentations-Generator enthält viele neu strukturiert Text (RST) Befehlszeilen-Wandler.
Installieren Sphinx:
$ pip install sphinx
Verwenden Sie dann eine der vielen RST2 * Py Helfer:
$ rst2html.py in_file.rst out_file.html
Nun, Sie es mit dem folgenden Code versuchen könnte, würde Nutzung sein:
compile_rst.py yourtext.rst
oder
compile_rst.py yourtext.rst desiredname.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")
Wenn Pyfunc Antwort nicht Ihren Anforderungen passen, könnten Sie stattdessen mit der Markdown Sprache betrachten. Die Syntax ist ähnlich ersten und markdown.py ist recht klein und einfach zu bedienen. Es ist immer noch nicht eine einzige Datei, aber Sie können es als Modul in bestehende Skripte importieren Sie haben können.