- Scheme(Gauche)でCGI2 : (2004/07/25)
-
CGIを書くのに必須とも言えるテンプレートエンジンを探したのだけれど、なかなか見つからない
しょうがないので自分で簡単なものを書いてみた
簡易テンプレートエンジン
使いかたは以下の通り
tmpl->string関数には、テンプレートのファイル名とハッシュテーブルオブジェクトを渡す
テンプレートファイルには、HTMLコードに混ぜて以下の特殊構文を使用可能
#--var:string--#
ハッシュテーブルから、キー"string"の値を取得し表示する
#--if:bool--#真ですよ!#--else:--#偽ですよ!#--end:if--#
ハッシュテーブルからキー"bool"の値を取得し、その値が真なら"真ですよ!"と表示、偽なら"偽ですよ!"と表示
偽なら何もしない場合、elseを省略してif〜endでよい
#--include:inc.html--#
"inc.html"というファイル名のファイルを開き、挿入する
仕様的には、includeは全ての特殊構文よりも先行して行われる
たとえば、if〜end構文の中に上記記述を書いた場合、bool値が偽であっても、includeは実行される(ただし、表示はされないが)
TODO(なんとかしなきゃリスト)
ネストされたif構文を正しく解釈できない
ループのための機構を用意していない
FormのFill機能
ちなみに、ハッシュテーブルの作り方は以下のように
(define ht (make-hash-table 'string=?))
(hash-table-put! ht "string" "test_string")
(hash-table-put! ht "bool" #t)
(display
(tmpl->string
"tmpl.html"
ht))