俺式ガジェット通信

欲しいモノ、手に入れたモノを「さらっと」メモ的な。スイーツもあり。

ClearSilver覚書(主に文法)

 

 

 

参考サイト

(本家かな?厳密に翻訳した訳では無いので参考としました。詳細は本家サイトを確認してください)

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付きはレンダリング時に実行される)

 

(編集中)