myb design

Sifter reference / IF, ELSE, ?

条件によって出力を制御するには、IF・ELSEを使用します。
また、1.1.3以降では?を使用した三項条件演算子風の記述も可能です。

書式

<!--@IF(条件式)-->

[<!--@ELSE[(条件式)]-->]

<!--@END_IF-->

または

<!--@?(条件式? 値1: 値2)-->

条件式では、以下の表現を使用できます。

置換タグ {変数名}
数値 12345
-12.34
文字列 'ABC'
'Let\'s go!'
'\\1,000-'
// 条件式中の文字列は必ず「'」(シングルクオート)で囲みます。
// 「'」「\」は「\」でエスケープします。
算術演算子 + - * / %
ビット演算子 & | ^ ~
比較演算子 // PHP版で使用できる比較演算子
== === != <> !== < <= > >=

# Perl版で使用できる比較演算子
== != < <= > >= <=> # これらは文字列比較にも使用できます
eq ne lt le gt ge cmp

# Ruby版で使用できる比較演算子
== === != < <= > >= <=>

# Python版で使用できる比較演算子
== != <> < <= > >=
is [not]
[not] in
論理演算子 and or xor not && || !
// PHP版では not は使用できません。
// Ruby版では xor は使用できません。
// Python版では xor && || ! は使用できません。
正規表現による
パターンマッチ
({変数名}=~/パターン/[imsx])
('文字列'=~/パターン/[imsx])
// 正規表現によるパターンマッチは必ず括弧で囲みます。
// Ruby版ではsオプションは使用できません。

?を使用した記述方法で、値1値2には置換タグや文字列を記述できます。
ただし、「:」「\」は「\」でエスケープします。
また、値1値2にさらに条件式を記述してネストすることはできません。


変数の設定:

[ PHP | Perl | Ruby | Python ]
// PHP
$template->set_var('name1', 'Peavy');
$template->set_var('name2', 'Andre');
$template->set_var('value', 2);
$template->set_var('domain', 'www.mybdesign.com');

テンプレート:

<!--@IF({name1}=='Peavy')-->
He is Peavy.
<!--@END_IF-->

<!--@IF({name2}=='Victor')-->
He is Victor.
<!--@ELSE({name2}=='Andre')-->
He is Andre.
<!--@ELSE-->
I don't know him.
<!--@END_IF-->

<!--@IF({value}-2==0)-->
The value is 2.
<!--@END_IF-->

<!--@IF(({domain}=~/\.com$/))-->
The domain is ".com".
<!--@END_IF-->

The value is <!--@?({value}==2? {value}\:OK: {value}\:NG)-->.

実行結果:

He is Peavy.

He is Andre.

The value is 2.

The domain is ".com".

The value is 2:OK.