« 練習に行ってきたよ | メイン | ホリエモンの知名度 »

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

トラックバック

コメント