記事一覧:2007年12月14日

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

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として見たときに解釈しやすくするため。開始/終了タグは変更可能。




よく日記の更新に失敗する件について&来年のApple新製品

genre:Mac,news


多分、「保存」と間違えて「プレビュー」をクリックしてしまっているのが原因だと思われるんですが、書いたはずの日記が登録されてねぇ! てことがよくあったり。



「プレビュー」だけして保存しなかった記事を自動バックアップしてくれる機能があったりすると良いんだけどなぁ・・・。



ということで、最初に書いた AppleInsider | Second-gen iPhone in final phase; Apple TV update planned – report のネタをもう一回書くのもアレなんで要約だけ。



・来年後半にiPhoneとApple TVの新型が出るっぽい

・iPhoneは3G対応。外見も変わるかも

・Apple TVには液晶ディスプレイが付くかも

・来年にはMacのラインアップも一新されるけど、多分デザイン的な問題でサブノートは出ない



Apple TVの買いどきはいつなんでしょ・・・