88171.net


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モジュールの維持管理に対する心理的ハードルが上がってしまっている。