パッケージからエクスポートされた tcl 関数のみをドキュメント化するように doxygen を作成する簡単な方法はありますか? おそらく設定ファイルのコマンド?
1 に答える
tcl がサポートされる言語になる前は、以前は Tcl ドキュメントの生成に doxygen を使用していました。入力ファイルを処理するための構成オプションがあります。
FILTER_PATTERNS = *.tcl=bin\tcl_converter.bat
bin\tcl_converter.bat は、カスタム プロセッサを起動する単なるバッチ スクリプトです。これを使用して、tcl 構文を、tcl サポートが追加される前に doxygen が理解できるものに最小限変更しました。ただし、ここでそれを使用して、エクスポートされていないメソッドをすべて削除することができます。エクスポートされていないすべてのプロシージャをドロップするようにプロセッサを作成するのは非常に簡単です。何かのようなもの:
- 入力ファイル ([lindex $argv 0] として渡されます) を行の配列に読み込みます
- エクスポート コマンドを探して、すべての行をループします。
- proc を探してすべての行をループし、上記のエクスポートされたコマンドと照合します。
- 現在のすべてのプロシージャとそのプリアンブルを文字列に保存します - エクスポートされたコマンドと一致する場合は、最後に出力ファイルに書き込みます
適切なパーサーがあれば、これは簡単に実行できますが、おそらくやり過ぎです。名前空間の始まりと proc の始まりを探して、ステート マシンをセットアップするだけです。名前空間を開始したら、すべての行を文字列に追加し続け、info complete $accumulated_ns_stringでテストします。同様に、procコマンドが表示されたら、行を別の文字列に蓄積し始め、各行の後にinfo complete $accumulated_proc_stringでチェックを続けます。true と評価されたら、文字列を印刷するか印刷しないかを選択してリセットできます。
info completeを使用すると、作業が大幅に簡素化されます。すべてのトリッキーは、名前空間を追跡し、エクスポートされた完全修飾名に対して完全修飾 proc 名を評価して、それを出力ファイルに出力するかどうかを決定することにあります。名前空間の外でコードが発生したり、動的に生成されたエクスポートが発生したりする病理学的なケースがいくつかありますが、このアプローチは、私たちが投げたすべてのものに対して、私の前の仕事で十分に機能しました。