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 を置くようにした。とりあえず。