テンプレートエンジン作りたい
いちおうまとめておきます。先週末の NanoA のテンプレートエンジン - kazuhoのメモ置き場 は妥協の産物で、本当は、
と思ってます。言うまでもないかもしれませんが。たとえば以下の例。
こんにちは、<?= username ?>さん <a href="/user?id=<?= userid ?>">マイページ</a>
前者は、 HTML encode するのが正しく、後者は、URI escape した後に HTML encode するのが正しい。そして、どのようなエスケープ手法を組み合わせるべきかは、テンプレートエンジンレベルで判別できること。反論としては、「テンプレートエンジンが重たくなる」というものがあり得るが、それはテンプレートをパースして実行形式に変換する際の問題。つまり、今日のコンパイルキャッシュの使用を前提とするテンプレートエンジンでは、問題にならない。
むしろ、エスケープの明示的な指定が (原則) 不要になることによる安全性の向上や、テンプレートエンジンレベルでの HTML 構文エラー検出による生産性向上が得られるんじゃないか。