« 練習に行ってきたよ | メイン | ホリエモンの知名度 »
2006年03月25日
HTML::Template 2.8 の不都合?
HTML::Template 2.8 をもう少し調べていたところ、不都合っぽいのを発見しました。
TMPL_VAR の ESCAPE の初期設定が 0 で固定だったのが、変更できるようになったということですね。
ということを書いたときは、次のように理解していたのです。
HTML::Template->new(default_escape => 'HTML');
こう書けば、デフォルトで以下が HTML としてエスケープされます。
<TMPL_VAR NAME="KEY">
そして、以下のように記述するとエスケープされないと。
<TMPL_VAR NAME="KEY" ESCAPE="">
この理解は間違いで、最後のエスケープ回避(アンエスケープ)が出来ませんでした。実際に HTML::Template のソースコードを読んだのですが、そんな処理が無かった…。というか、無理やり default_escape が突っ込まれた感じで、あまり美しくなかった。
ちなみに、こんな不都合も。
<TMPL_VAR NAME="KEY" ESCAPE="JS">
これは、有効になりますが、以下は有効になりません。
<TMPL_VAR NAME="KEY" ESCAPE='JS'>
" でも ' でもいいような感じで書かれていたのですが、なぜか JS だけはダメです。というか、その辺の抽出がハードコード(?)されていたので、書き忘れなんじゃないかと。
自分の使いやすいようにカスタマイズして、別のモジュールにしたほうがいいかもしれないと思ってきましたよ。結構使われているモジュールでも、ソースコードが美しいというわけじゃないんだね。機能が美しいから使われるわけであって、ソースコードの良し悪しは関係ないと再確認。といいつつも、この HTML::Template は、自身の利用実態に微妙に合わない…。
こんなことを書きながら調べていたら、メーリングリストにパッチが出ていました。
【関連記事】
・HTML::Template 2.6 と 2.8 の違い (2006年03月05日)
【関連情報】
・default_escape patches (html-template-users)
http://sourceforge.net/mailarchive/forum.php?thread_id=9948445&forum_id=9830
2006年03月25日 23:22 | Programming