libtext-mkdown-perl v0.01

私家版 Markdown 処理系 Text-Mkdown を改訂しました。

https://github.com/tociyuki/libtext-mkdown-perl

  1. 強調記号の処理に DFA を使うようになりました。
  2. フットノートを使えるようになりました。
  3. 定義リストを使えるようになりました。
  4. シングル角括弧でリファレンス・リンクを作れるようになりました。
  5. インライン・リンクおよびリファレンス・リンクのテキスト部の入れ子の角括弧の扱いを他の処理系に合わせて外側から内側へと辿りながら最初に a 要素になった段階で止めるようにしました。
  6. 同上で、テキスト部にイメージが含まれるときは、ちゃんとイメージ要素を含む a 要素になるようになりました。
  7. オプションにより、単語の途中に現れるアンダースコアを強調記号ではなくアンダースコア文字そのものみなすように切り替え可能にしました。デフォルトでは強調記号として扱います。
  8. まだシンタックス・ハイライトにしていませんが、githubmarkdown のようにバックチック3連でソースコードのブロック要素を扱えるようにしました。

内部の処理ロジックがこの版で大きく変わりました。これまでは、ブロック要素の解析器から、その都度、インライン要素の解析器を呼び出しつつ、1 パスで XHTML のテキストを得ていました。今回からは、ブロック要素の解析器は中間リストを出力し、それを深さ優先で辿りながらインライン要素の解析器を動かしつつ XHTML テキストを作る 2 パス構成に変えました。メモリの一時オブジェクトが膨れ上がりますが、フットノートを初めとして、この方が扱いやすくなります。