[library] HTML-TEMPLATE

cl-whoはデザイナーさんがイジるにはハードル高過ぎるかなーと思って HTML-TEMPLATE を使ってみたので、何となくメモ。

これは何ですか

動的にHTMLを作るためのライブラリ。
Perlに HTML::Template ってのがあって、それっぽくしてあるらしい。JavaJSPとかRubyのERBみたいな。

どう使うの

Quicklispでインストール可能。テンプレートの作り方は元サイトをどうぞ。

<!-- TMPL_VAR --> 値を埋め込み
<!-- TMPL_LOOP キー --><!-- /TMPL_LOOP --> dolistな繰り返し
<!-- TMPL_REPEAT キー --><!-- /TMPL_REPEAT --> dotimesな繰り返し
<!-- TMPL_IF キー --><!-- TMPL_ELSE --><!-- /TMPL_IF --> ifな条件分岐 elseは省略可能
<!-- TMPL_UNLESS キー --><!-- TMPL_ELSE --><!-- /TMPL_UNLESS --> unlessな条件分岐 elseは省略可能
<!-- TMPL_INCLUDE 'パス' --> パスで指定したファイルの内容を、そこに展開
<!-- TMPL_CALL キー --> テンプレートを処理した結果を埋め込む

fill-and-print-template にテンプレートファイルの pathnameを渡すとか、文字列で テンプレートを直接渡すとか。

注意点

デフォルトでは標準出力辺りにHTMLを出力しているよう。html-template:*default-template-output* を、自分の出力したい先へ束縛するといいのだと思う。

注意点2

HTML_INCLUDE を使うとき、勝手に相対パスで見てくれたりしません。
html-template:*default-template-pathname* からの相対パス、またはマシンの絶対パスで指定するっぽい。
それっぽい パスを束縛しましょう。

注意点3

fill-and-print-template のキーワード引数で :external-format は指定したほうが多分いい。
Windows, SBCL, UTF-8のテンプレートだと :external-format を指定しないと、日本語の引数を渡したときに死んでいた。

よく分かってない

正直、あまり良く分かってません。ただ、特殊な機能が タグではなく、コメントとして記述するってのは、ちょっと面白いなーと思ったのでした。