5

docutil.nodesツリー用のreSTライターはありますか?見つかりませんでしたが、明らかなものが見つからない可能性があります。それとも自分で書くのは簡単ですか?reSTからreSTへの変換を実装したいと思います。

4

1 に答える 1

5

ありませんし、些細なReSTマークアップを超えて実装することは不可能ではないにしても難しいです。

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

実際の例は、 Sphinxからのさまざまなディレクティブpy:classです。これらのディレクティブpending_xrefはノードをドキュメントツリーに挿入し、後で実際の相互参照に解決されます。ただし、ノードに対応する単一のディレクティブがないため、pending_xrefそのようなノードを含むドキュメントツリーに直接対応するReSTソースはありません。

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

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

于 2012-12-10T16:38:11.557 に答える