年末年始なので何か作ろうかなと思いhaiji*1というライブラリを作ってみてる. まぁ,なんというか最近ansible*2よく使ってたこともあってイロイロ思うトコロあったりなかったり. 大概のテンプレートエンジンにおいて,個人的にイマイチ気に入らないトコロは未定義変数の扱いだ.ある変数の値を展開しようとして,「テンプレートを展開しようとした環境でその変数の値が未定義なとき」を考えるなんてハッキリ言って正気とは思えないし,未定義なときは空文字列と同じになるとかもお前ホントそれでいいのかと.. 具体的には,テンプレートの展開を行っている環境からある変数を消す,あるいは,変数名を変更するといった変更に伴い,展開結果が変わってしまうかどうかが実際に動かすまでは簡単にはわからなくなるという点が嫌.これは,erbのrender partialやJinja2のincludeといったテンプレート自体の部品