テンプレートの仕様
2009年6月15日
Nucleusでいうところのテンプレート変数の仕様がほぼ決まった。Nucleusでは<%title%> <%body%>などいくつかあるが、Jeansでは一つのスキン変数(例えば、<%contents%>)を、Nucleusのテンプレート変数に割り当てる。
例えば、Nucleusの<%title%>は、Jeansでは<%contents(title)%>とする。いまのところ、この<%contents%>のシンタックスは、以下のとおり。
<%contents( column-SQL [, mode [, maxlength [, toadd ] ] ] )%>
・column-SQLは、title, body, more など。SQLクエリーのSELECT節の内容に準拠。
・modeは、hsc(デフォルト), raw, strip_tags, shorten, constのどれか。
・shortenモードの際、maxlength, toadd を指定することができる。
ただし、このようなシンプルな仕様では、Nucleusの<%morelink%>のような複雑な動きをするものを実装しづらい。これを可能にするため、例えば$row['morelink']に、ラムダもしくはarrayで指定されたクラスメソッドが設定されている場合に、それを呼び出すことにする。
view::showUsingQueryの実行の際、それぞれのrowのパースの前後に実行するためのラムダ(もしくは、クラスメソッド等)を指定できるよう西、このラムダ中で$rowを書き換えることができるようにしておく。
contentsというつづりが長いので、rowとか、dataとか、もう少し短いものにしようかと考えているところ。
ところで、先日議論したスキンの仕様であるが、スキンディレクトリ内にあるskin.incをパースする方法で、ほぼ決まり。skin.inc内に<%skin.selector%>を記述し、skin::skinvar_selector()メソッド内で、skin_index.incやskin_item.incなどに分岐する。
例えば、Nucleusの<%title%>は、Jeansでは<%contents(title)%>とする。いまのところ、この<%contents%>のシンタックスは、以下のとおり。
<%contents( column-SQL [, mode [, maxlength [, toadd ] ] ] )%>
・column-SQLは、title, body, more など。SQLクエリーのSELECT節の内容に準拠。
・modeは、hsc(デフォルト), raw, strip_tags, shorten, constのどれか。
・shortenモードの際、maxlength, toadd を指定することができる。
ただし、このようなシンプルな仕様では、Nucleusの<%morelink%>のような複雑な動きをするものを実装しづらい。これを可能にするため、例えば$row['morelink']に、ラムダもしくはarrayで指定されたクラスメソッドが設定されている場合に、それを呼び出すことにする。
view::showUsingQueryの実行の際、それぞれのrowのパースの前後に実行するためのラムダ(もしくは、クラスメソッド等)を指定できるよう西、このラムダ中で$rowを書き換えることができるようにしておく。
contentsというつづりが長いので、rowとか、dataとか、もう少し短いものにしようかと考えているところ。
ところで、先日議論したスキンの仕様であるが、スキンディレクトリ内にあるskin.incをパースする方法で、ほぼ決まり。skin.inc内に<%skin.selector%>を記述し、skin::skinvar_selector()メソッド内で、skin_index.incやskin_item.incなどに分岐する。
コメント
Kat (2009年6月18日 13:29:29)
SQLiteのユーザ関数登録法。
INSERT INTO user_function ( funct_name , funct_type , funct_code , funct_num_args , base_id )
VALUES ( 'test2' , 1 , 'function test2($str) {return $str;}' , 1 , NULL ) ;
INSERT INTO user_function ( funct_name , funct_type , funct_code , funct_num_args , base_id )
VALUES ( 'test2' , 1 , 'function test2($str) {return $str;}' , 1 , NULL ) ;