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?

War es hilfreich?

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.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top