Blog向けの toctree を作成する

2015/04/21

Top ページ に名前降順で、最新 N 件のみ表示したい。

また、先頭に日付けを付けて表示したい。

こういった機能は無いので、 toctree をカスタマイズして実装する。

名前降順 N 件のみ表示

TocTree を継承した BlogTocTree を作り、 option_spec に設定をつけた。

'reverse': directives.flag,
'maxnum': int,

のような形で定義。後は run() メソッドで ret[0][0]['entries']toctree に含まれる記事が入っているので、これらを処理した。

タイトルの先頭に日付けをつけて表示する

本来的には「2015/04/19 Github Pages を Sphinx で」といったタイトルの場合、日付け部分をリンクにしないで toctree を表示したかった。

Sphinx のコードを読んでみたが、どこの処理で toctree を HTML のリストに変えているか分からなかったので、手抜き。

ret[0][0]['entries'](display_name, docname) のタプルのリストで並んでおり、この display_name を書き換えると表示される文字列を変えることができる。

for でループして、ファイルを読み込んで、 実際に blog_date ロール定義があった場合に display_name を書き換えるようにした。

終わりに

コードは GitHub に置いたので、興味のある方はどうぞ。