General

skinの下にtemplate、さらにその下にitem

2008年7月27日

久しぶりに、Jeansのコードを見ている。プログラミングの手を止めて、頭の中でだけ試行錯誤していたときに気になっていたのが、テンプレートエンジンの動作について。

単一のスタティックメソッドを、スキン変数にもテンプレート変数にも対応できるように割り当てられるような仕様は良いのであるが、改めてJeansのコードを眺めてみると、スパゲッティ気味のところもあるような、無いような。

スキン変数の展開や、テンプレート変数の展開には、jitクラスを用いていて、それぞれjit:parse_skin()、jit::parse_tempale()メソッドを利用することになっている。加えて、jit::parse_item()というのもある。これらは結局、同じjitエンジン(self::compile()とself::parse_compiled())を解してコード実行にまわされるのであるが、同じエンジンを用いているにもかかわらず異なる実行内容になるのは、jeans_skinvarテーブルのうち、subtypeカラムの値が異なるものを拾って実行しているからである。

skinの下にtemplateがあり、さらにその下にitemがあるという3段構造になっている。

これをもっとフレキシブルに出来ないのであろうか?最初考えていた、テンプレートの概念をなくしてスキンを多層にするというのがそれなのであるが、もう少し考えてみる余地がありそうである。

コメント

kat (2008年9月16日 23:47:41)

twitterでの議論で気がついたことのメモ。

スキンに、itemやindexページなどでの共通コードを記述できるようにすると面白い。例えば、commonという種類のスキンは、どのページでも必ずパースされ、common中の一部の表示だけが、itemやindexなどのページで異なるというもの。他には、skinheadやskinfootを用意し、頭と尻に必ず表示されるとか。

コメント送信