web-dev-qa-db-ja.com

rstをhtmlに変換するための単一のpyファイル

ReStructuredTextで書かれたブログがありますが、現在、新しい投稿を作成するときに手動でHTMLに変換する必要があります。

Google App Engineを使用して新しいブログシステムを作成していますが、rstをHTMLに変換する簡単な方法が必要です。

docutilsは大きすぎて複雑なので、使いたくありません。これを行うためのより簡単な(理想的には単一のpythonファイル)方法はありますか?

20
linjunhalida

docutilsのハッキング の手順をご覧ください。最初からhtmlを生成するためにdocutils全体が必要なわけではありませんが、リーダー、パーサー、トランスフォーマー、ライターは必要です。少しの努力で、これらすべてを既存のdocutilsファイルから1つのファイルに組み合わせることができます。

6
Matti Pastell

docutilsは、インストールできるライブラリです。また、静止状態からhtmlを含むさまざまな形式に変換するためのフロントエンドツールもインストールします。

これは、使用できるスタンドアロンツールです。

ほとんどのコンバーターは、このためにdocutilsライブラリを利用します。

24
pyfunc

SphinxドキュメントジェネレータPythonライブラリには、多くの再構築されたテキスト(RST)コマンドラインコンバータが含まれています。

Sphinxをインストールします。

$ pip install sphinx

次に、多くのrst2 * .pyヘルパーの1つを使用します。

$ rst2html.py in_file.rst out_file.html
17
Blaker

次のコードで試してみることができます。使用法は次のようになります。

compile_rst.py yourtext.rst

または

compile_rst.py yourtext.rstdesiredname.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")
2
bunkus

ローカルでドキュメントを作成する

Install Python.
Clone the forked repository to your computer.
Open the folder that contains the repository.
Execute: pip install -r requirements.txt --ignore-installed
Execute: sphinx-build -b html docs build
The rendered documentation is now in the build directory as HTML.
1
maxlogo

Pyfuncの答えがニーズに合わない場合は、代わりにMarkdown言語の使用を検討できます。構文はrstに似ており、markdown.pyはかなり小さくて使いやすいです。それはまだ単一のファイルではありませんが、モジュールとして既存のスクリプトにインポートできます。

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

0
AndrewF