ClearSilver覚書(主に文法)
参考サイト
(本家かな?厳密に翻訳した訳では無いので参考としました。詳細は本家サイトを確認してください)
【インストール】
上記サイトからソースをダウンロードしてコンパイルして・・
(別途、書く機会があれば)
【文法:1データセット】
HDF。first()とかlast()で要素を取り出せる。
Page.%d.Name
Page.%d.Url
・・というデータセットの場合、
Page
1{
Name = テストaaa
Url = /exUrl1
}
Page.2.Name = テストbbb
Page.2.Url = /exUrl2
ループ例1
<?cs each:item = Page ?>
<?cs name:item ?> - < a href="<?cs var:item.Url?>">
<?cs var:item.Name ?></a><br>
<?cs /each ?>
結果(html出力)
1 - < a href=/exUrl1>testaaa</a><br>
2 - < a href=/exUrl2>testbbb</a><br>
ループ例2(loop(開始位置、終了位置、増分(マイナス指定可)))
<?cs loop: x = #1, #5, #2 ?><?cs var:x ?><?cs /loop ?>
結果(html出力)
1, 3, 5
【文法:2演算子】
==(イコール。文字でも数値でも評価される)
<?cs if:code == "0" ?>
!=(ノットイコール。文字でも数値でも評価される)
<?cs if:code != 0 ?>
||(or条件。文字でも数値でも評価される)
<?cs if:code == "0" || #0 ?>
&&(and条件。文字でも数値でも評価される)
<?cs if:code == "" && NULL ?>
>、>=、<、<=(大なり小なり。文字でも数値でも評価される)
<?cs if:code >= 666 ?>
+(足す。数値同士の場合は足し算され、文字列の場合は連結される)
<?cs set:count = count + #1 ?>
-、*、/、%(引く、乗算、除算、余り(mod)。数値同士のみ)
<?cs set:count = count - #1 ?>
!(not。無ければ評価)
<?cs if:!code ?>(codeがNULL、または長さゼロの文字の場合、評価)
?(exist。有れば評価)
<?cs if:?code ?>(codeがNULL、または長さゼロの文字でない場合、評価)
【文法:3関数定義と呼出マクロ】
def(define:関数定義)
<?cs def:SampleFunction1() ?> ~ <?cs /def ?>
call(call:関数呼出)
<?cs call:SampleFunction1() ?>
【文法:4コメント他】
”(ダブルクオート。ダブルクオートで括ると文字列とみなす)
"ああああ"、とか、"12345"
#(シャープ。数値とみなす)
#1234
#には別途、コメントを表す事ができる。
<?cs # if:code == "0" ?>と書くと、<?~?>まで評価されない。
また下記のように、途中改行しても評価されないため、複数行をコメント化
できる。(ただし改行を入れると、HTMLに無駄な空白行が出力される)
<?cs # (改行)
if:code == "0"(改行)
?>
しかしコメントの入れ子はできない。
<?cs・・<?csだとエラー。csタグ内にcsタグは使用できない。
【文法:4標準関数】
subcount(配列名)(配列数を取得する)
<?cs var:subcount(item.hairetsu) ?>とか、
<?cs if:subcount(item.hairetsu) > 1 ?>という感じ。
string.length(文字列)(文字列の長さを取得)
<?cs var:string.length(”ああああ”) ?>だと、8が返る。
string.slice(文字列,開始位置,終了位置)
(文字列から、開始位置~終了位置の文字を取得。先頭は0。)
string.find(文字列,探したい文字)
(文字列から、文字を先頭から探す。見つからなければー1が返る)
<?cs set:buff="abc.de" ?>
<?cs var:string.slice(buff,string.find(buff, "."),string.length(buff) ) ?>
だと、”abc.de”から「.」の位置を探して、「.」以降の文字を取得する。
この場合は「.de」が返る。
name(データセット)
(データセットの、最後のカラム?を表示。
ローカル変数に使用すると、何番目のデータか(1、2、・・)がわかる。
インデックスはデータの作り次第(0で始まるか、1で始まるか等))
set(変数=入力値)
(変数に入力値を設定する)
include、linclude
(他ファイルを参照する。l付きの場合は読み込みがレンダリング時となっている)
var()、evar()、lvar()
(置換。e付きはパース時、l付きはレンダリング時に実行される)
(編集中)