PureDocとKramdownのhn要素のidを統一する
有用なユーティリティコード
- TOP
- Old Archives
- PureDocとKramdownのhn要素のidを統一する
「Markdownで書いたページがTOCのリンクが切れている」という問題に気づき、急遽対処を行った
問題は、Kramdownが生成するヘッダーIDが、単純にテキストを用いるものではなかった、ということだ。
KramdownはどうしてもIDにACSIIのみを使うようになっており、そのためになかなか複雑な処理をしている。
これを統一するため、Kramdownのこの処理をしているところを探したところ、base.rbにあるKramdown::Converter::Base#generate_id
であることがわかった。
これを、常にテキストを用いるようにオーバーライトする。ほんとはオーバーライドしたかったのだが、Kramdownの構造的にそれは割と難しい。
PureBuilderのコードをいじれば、一応動くようにはなる。これは、そのままのテキストを使うようにして、PureDocと揃えたためだ。
PureDocのほうも複数の形式をサポート。その中でデフォルトは今までどおりテキストを使う形式だが、Kramdownに合わせ、重複した場合の対処を加えた。
これによってテキストだけではIDを判断できなくなったので、IDもTOC
の中に含めるようにした。