rdocスタイルの折りたたみ可能なコードセクションを生成する方法
-
05-07-2019 - |
質問
Doxygenを使用してC ++プロジェクトの内部ドキュメントを作成しています。 Doxygenにメソッドなどのソースを含めるようにしていますが、これによりページがスキャンしにくくなります。 rdocのように動作し、デフォルトで折りたたまれているブロックでソースを非表示にします。
HTML_DYNAMIC_SECTIONS
はこれを可能にするかもしれないと思ったが、悲しいかな、changelogはオプションが図とグラフにしか影響しないと言っている。
たぶんLAYOUT_FILE
を編集することでできますか?
とにかく、賢い人たち、どうすればDoxygenに折りたたみ可能なコードセクションを生成させることができますか?
解決
メソッドなどのソースを含める場合[...]、ページをスキャンしにくくする場合、どうしてリンクしないのですか?それに include SOURCE_BROWSER = YES
) >それ( INLINE_SOURCES = YES
)?これにより、ページのスキャンが容易になり、ロードが高速になり、ソースにアクセスできるようになります(ソースページをもう1つロードする必要があります)。実際にソースにアクセスする必要がある頻度に依存します。
とはいえ、折りたたみ可能なコードセクションを生成する方法は あります(ただし、ソースを変更してDoxygenを再コンパイルする必要があります):
- DoxygenのHTML出力の折りたたみ可能なセクション 2つのネストされた
<div>
s でマークされています:
<div class="dynheader"><div class="dynsection">
[collapsible section]
</div></div>
- 含まれるコードセクションは次のようにマークされます:
<div class="fragment"><pre class="fragment">...</pre></div>
-
したがって、含まれているコードセクションを折りたたみ可能にするには、次のいずれかを行う必要があります
- 変更生成するコード
<div class="dynheader"><div class="dynsection">...</div></div>
を生成してinitDynSections()
を生成し(おそらくcssを調整します)、または - JavaScript
<div class="fragment"><pre class="fragment">
関数。折りたたみ可能なセクションをスキャンして折りたたみ、SOURCE_BROWSER
をそれらの1つとして認識します。
- 変更生成するコード
実装(または<=>ルート:))は、読者への課題として残されています。幸運を祈ります!
ああ、もしパッチで成功するなら、、将来のバージョンに含めることができるようにします。ありがとう!
他のヒント
私の選択した検索エンジンを使用してここに来て、doxygenソースを変更することは絶対に必要ではないことに注意してください。
この質問が尋ねられたとき、おそらく htmlonly
タグを使用して純粋なhtmlを埋め込むが、これを念頭に置いて、toggleVisibility
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
現在、ドキュメントルートに配置されたdynsections.jsというファイルでドキュメントが生成されるたびに利用可能です。
このコードについては、JavaScriptを使用して自分のドキュメントから折りたたみ可能なコードを作成できる条件を知ることができます。この関数の内部実行エラーを回避し、さらにJavaScriptコードが解釈されないようにします。
- 一意の識別子を持つdom要素
id
- 一意の識別子を持つ別のカプセル化されたdom要素
src
-summary - 一意の識別子
class
-content を持つ別のカプセル化されたdom要素
- 一意の識別子
example-div
-trigger を持つ別のカプセル化されたdom要素
- <=>-trigger要素には、少なくとも1文字の<=>属性が含まれている必要があります
- メインコンテナの<=>属性は重要ではありません
これらの条件を念頭に置いて、次のコードを作成できます。
## <a href="javascript:toggleVisibility($('#example-div'))">Fold me</a>
## <div id="example-div">
## <div id="example-div-summary"></div>
## <div id="example-div-content">
## <pre>
## foo
## bar
## </pre>
## </div>
## <div id="example-div-trigger" src="-"></div>
## </div>
## @htmlonly <script type="text/javascript">$("#example-div").ready(function() { toggleVisibility($("#example-div")); });</script> @endhtmlonly
上記のdoxygenコードは、 bash-doxygen を使用してbashコードを文書化するために使用されます。純粋なdoxygenコードとは少し異なります。 divコンテナに関係する最初の部分は、関数<=>のソースに適合し、doxygenコメントを必要に応じてエラーなく調整して実行可能にするための条件について既に説明しています。
ここで使用される一意のIDプレフィックスは<=>です。 1行目には、 jQuery コードと一緒にjavascriptを直接使用してセクションを展開するハイパーリファレンスリンクのセットアップがあります。
残っているのは、最後のライナーです。特定のセグメントを最初に折り畳むために実行する必要がある jQuery スクリプトが含まれています。 bash-doxygen(およびおそらく他の言語)の場合、スクリプトのブロックスコープのため、ブロックは1つのライナーである必要があります
通常、\ htmlonlyと\ endhtmlonlyの間のコンテンツはそのまま挿入されます。 <!> lt; p <!> gt; .. <!> lt; / p <!> gt;の外側に表示されるテーブルまたはリストのようなブロックスコープを持つHTMLフラグメントを挿入する場合、これにより無効なHTML \ htmlonly [block]を使用すると、doxygenで現在の段落を終了し、\ endhtmlonlyの後に再起動できます。
doxygenのドキュメントで確認され、右下にコメントがマークされています stackoverflow answer onのソリューションdoxygenのドキュメントにスクリプトタグを含める。
読んでくれてありがとう。 これがここにやってくる一部の人々を助けることを願っています。