2012-12-10 4 views
5

の木にはreSTの作者はありますか?私は1つを見つけることができませんでしたが、多分私は何かが明らかに欠けている。それともあなた自身で書くことは簡単ですか? reST-to-reST変換を実装したいと思います。reSTライターはありますか?

答えて

5

些細なReSTマークアップを超えて実装することは困難ではありませんが、難しくありません。

ReSTのロールとディレクティブは、構文解析時ににある任意のコードを実行することがあります。特に、ロールやディレクティブは、任意のコンテンツを持つ任意の型のノードを作成し、ドキュメントツリーに挿入することができます。したがって、ドキュメントツリーとReSTソースコードとの間の直接的なマッピングはなく、その結果、元のReSTソースコードまたは少なくとも近づいたものを任意のドキュメントツリーで得ることは不可能です。

実世界の例は、Sphinxからのさまざまな指令です。 py:class。これらのディレクティブは、pending_xrefノードをドキュメントツリーに挿入し、後の時点で実際の相互参照に解決されます。しかし、pending_xrefノードに対応する単一の指令は存在せず、このようなノードを含む文書ツリーに直接対応するReSTソースは存在しません。

単純な標準のReSTマークアップ、つまり見出し、段落、強調などのライターを実装することができます。私は実装についてはわかりませんが、それは自分でやることは自明です。それは、あなたの目的には十分かもしれません。

ドキュメントに役割、ディレクティブまたは置換が含まれている場合、ReST-to-ReST変換は不可能です。しかし、すべての役割とディレクティブの登録を解除してから、すべての役割とディレクティブを捕捉して文字通り文書ツリーに保持する関数を登録することで、チートをソートできます。このようなツリーに基づいて、ソースを復元することができます(または少なくともこれに近づくことができます)。ただし、置換は解析の初期段階で適用され、結果のツリーには表示されないため、置換は失われます。

+0

+1美しい答え、ありがとう。 – ThomasH

関連する問題