Gosuke Miyashita about feed

blosxom + Template Toolkit

29 April 2005

interpolate_fancyプラグイン は便利なのですが、 HTML::Template Template 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でまわしたりするのは、正常に動作しないと思う。