Chienomi

PureDocのTOC機能

有用なユーティリティコード

PureDocにTOC機能をつけた。

これまでPureDocで生成されたドキュメントにはドキュメント内リンクのためのID振りがなかった。

そのため、長文になると結構たどりにくい。 また、文書を参照してもらうのが難しかった。

そこで暫定的にHTMLに直接IDを書いたあと、更新に備えてその機能を急造した。

今回はかなり書き直した。 ヘッダー関連のメタメソッドを書き換えただけではない。 専用のクラスまで書き足した。

TOCクラスはStructだが、TOCContainerArrayのサブクラスとなっている。 これは、TOCを作るためにストックされたヘッダ情報を展開するためのメソッドをもたせるためだ。

だが、ネストした構造(例えばリストでネストさせる)のTOCを作るための展開用メソッドはなかなか作れない。

必ずしもh1から順にあるわけでもなく、例えば

h3->h4->h2ということもありうる。 ネストした状態でこれを処理するのはかなり難しい。徐々に深くなる前提にしてしまわない限りどうやって開き、どうやって閉じるかは難しい。

とりあえず単純にインデクシングのためのヒントと共にイテレータを回す構造としたが、 インデックスの1増減の問題が激しく大変だった。

既にReasonsetのサイトは適用されている。まだ整頓されていない状態だが、あまりにも使いやすかったため、実際に全体に取り入れてしまっている。 ただし、IDの付け方は将来的には変更されるだろう。現在のままではコンフリクトする可能性が高い。

PureDocの変更によって実装された(ReasonSiteでの採用はテンプレートも編集された)ため、既にGitHubには変更が反映されている。