Markdown世俗主義へ
このBlosxomではずっとMarkdown原理主義を貫いてきた。
Daring Fireballで供された Markdown.pl
をパーサとして使っている。
‥‥のだけど、よそで世俗的なMarkdownばかり書いていたらさすがに辛くなってきたので、宗旨替えすることにした。 GFMやMultiMarkdownまでいくと俗っぽすぎるきらいがあるので、CommonMarkで手を打つ。
Blosxomプラグインを書く必要がある。
Cによるリファレンス実装であるところのcmarkを利用するのがいいと思った。 PerlにもCommonMarkモジュールというlibcmarkインタフェースが存在するのだけど、維持管理が面倒で二の足を踏む。
場当たり的にcmarkコマンドを叩くプラグインを書いてみた。
当然ながら変換処理自体は Markdown.pl
より圧倒的に速いのだけど、コマンド実行のオーバーヘッドがやはり気になる。
いち記事ごとにプロセスを起動するというのも気分が良くない。
結局、libcmarkの cmark_markdown_to_html()
をInline::Cで呼び出すかたちでひとまず落ち着いた。
メモリ管理まわりにいまいち自信が持てないのでソースは伏せる。
まあ100万回くらい回してもリークしてる様子はないし、所詮CGIプログラムなのでリークしていたところで実害もないのだけど、SVを正しく管理できてるかわからない。
CommonMarkモジュールのパッケージがGentooにあれば迷わず使っていたとは思う。 そうでなくとも使うべきだとも思う。
g-cpanは避けたいしCartonも使わなくなってしまったので、Perlモジュールの維持管理に対する心理的ハードルが上がってしまっている。