blosxom + Template Toolkit

interpolate_fancyプラグインは便利なのですが、HTML::TemplateTemplate Toolkitに慣れているとなんか物足りないし、やはり慣れた記法で記述したいですよね。

で、探してみるとblosxomでHTML::Templateを使うためのプラグインを見つけましたが、Template Toolkitに対応したものはないようです。

個人的にはHTML::Templateもシンプルで好きなのですが、Template Toolkitの柔軟性も捨てがたいので、Template Toolkit対応プラグインを作ってみました。ttプラグイン

通常であれば、

$plugin::variable

と記述するところを、

[% plugin.variable %]

と記述します。package blosxomの変数であれば、

[% blosxom.variable %]

でも、

[% variable %]

でもOKです。

blosxom.cgi中のinterpolateサブルーチンの内容もこのプラグインに含まれてますので、本来の

$plugin::variable

という記述でもちゃんと処理します。

IF, UNLESSはちゃんと動作してるようですが、他のディレクティブはどうなるか試していません。

HTML::Templateであれば、paramメソッドを利用して、テンプレートで使われているパラメータリストを取得できるのですが、Template Toolkitでは同様のことができるメソッドがないようで、Template::Parserのtokenise_directiveメソッドで分解したtokenを正規表現で処理してパラメータを取得しています。IF, UNLESS以外のディレクティブがちゃんと動作するかどうかは、ここの処理にかかってるわけですが、たぶん、複雑なデータ構造のものをFOREACHでまわしたりするのは、正常に動作しないと思う。