パスワードを忘れた? アカウント作成
477543 journal

hylomの日記: 簡易テンプレートエンジンの仕様を考えるメモ

日記 by hylom

genre:memo,programming,perl

Perlで簡易的な、でも実用に耐えるHTML用のテンプレートエンジンを作るための仕様を適当に考えてみる。

●Parserエンジン仕様
# パーサーオブジェクト生成
$p = new TinyHTMLParser();

#テンプレートと変数を渡してParseする。
#変数($vars)は参照の形で渡す。
#テンプレート($template)はファイル名かfopenで開いたファイルのグラブか生テキストデータ。
#戻り値はテンプレートに変数を適用した結果。
$html = TinyHTMLParser()\%vars, $template);

・変数は%varsの要素として渡す。スカラーと配列を渡せる

●テンプレート仕様
・「$変数名」は引数に与えた変数(スカラー)で展開される
・「$$」は「$」に展開される
・「$変数名」がハッシュへの参照の場合、「$変数名->要素」で「要素」という名前を持つ要素にアクセスできる。ただし、「$変数名->要素->要素」という表現は禁止。
・「<!--foreach $var in @配列名-->」~「<!--end foreach-->」でループ。$varに@配列名の要素を次々と代入して繰り返す
・「<!--if $var-->」~「<!--else-->」~「<!--end if-->」でif~else~式条件分岐。$varがexistならelseまでを適用、not existならelse以降を適用

以上。TemplateToolkitのサブセット版みたいな感じだね。原則として、内部データを直でテンプレートに適用するのではなく、表示用のデータに変換してからテンプレートに適用することを想定。
分岐を「<!-- -->」で囲むのは、HTMLとして見たときに解釈しやすくするため。開始/終了タグは変更可能。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...