NanoA のテンプレートエンジン

NanoA のテンプレートエンジン (ということはつまり MENTA::Template) は、エスケープの有無を明示的に指定する方式なんだけど、めんどくさいなーと思った (TT よりマシだけど)。なので、確か Ruby on Rails がそうだったけかなとか思いながら、RawString 型を使う自動エスケープに変更した。

<?= "この文字列はエスケープされます" =>
<?= $app->render("include_another_template") =>

前者はスカラーなので自動エスケープされるが、後者は返ってくるのが RawString 型なのでエスケープしない (二重エスケープにならない)。そんな感じ。もちろん明示的に、

<?=r "never escape my <>!" ?>

と、エスケープを拒否することもできる。

MENTA::Template を呼び出す側もいろいろ変更しなきゃいけないので、MENTA 側の svn にはコミットせずに、NanoA 内に私家版の MENTA::Template を置くようにした。とりあえず。