条件分岐
Pugで条件分岐を行うには、いくつか種類があります。
if文
条件に応じた分岐を行うには、if 条件文
を使用します。
ifで一致しなかった場合の処理はelse
を使用し、別の条件で処理を行う場合はelse if 条件文
を使用します。
それぞれに一致した場合の処理は、改行しインデントを付けて記述します。
条件文には論理演算子や比較演算子などの演算子が使用できます。
詳しくは、演算子ページをご覧ください。
構文
if 条件文
条件に一致した場合の処理
if 条件文
条件に一致した場合の処理
else
条件に一致しなかった場合の処理
if 条件文
条件に一致した場合の処理
else if 条件文
条件に一致した場合の処理
else
条件に一致しなかった場合の処理
サンプルコード
Pug
- var pageType = 'top'
link(rel="stylesheet" href="/assets/css/common.css")
if pageType == 'top'
link(rel="stylesheet" href="/assets/css/top.css")
else if pageType == 'lp'
link(rel="stylesheet" href="/assets/css/lp.css")
else
link(rel="stylesheet" href="/assets/css/page.css")
コンパイル後
<link rel="stylesheet" href="/assets/css/common.css">
<link rel="stylesheet" href="/assets/css/top.css">
unless文
if文の逆で条件に一致しない分岐を行うには、unless
を使用します。
unlessに一致しない場合は、else
を使用します。
なお、if文と違い、さらに別の条件になるようなもの(else unlessのような構文)はありません。
構文
unless 条件文
条件に一致しなかった場合の処理
unless 条件文
条件に一致しなかった場合の処理
else
条件に一致した場合の処理
サンプルコード
Pug
- var num = 100
unless num >= 100
p="100未満"
else
p="100以上"
コンパイル後
<p>100以上</p>
case文
対象の値が真か偽かで分岐を行うには、case
とwhen
を使用します。
if文のif 値 == 値
に相当します。
また、何れにも一致しない場合に処理を行いたい場合は、default
を使用します。
条件に一致した場合に何も行わないようにする場合は、- break
を使用します。
構文
case 条件式
when 評価する値
一致した場合の処理
case 条件式
when 評価する値
一致した場合の処理
default
何れも一致しなかった場合の処理
case 条件式
when 評価する値
- break
サンプルコード
次の例では変数fooが"a"か"ka"かそれ以外の評価を行います。
Pug
- var foo = "a"
case foo
when "a"
P="あいうえお"
when "ka"
p="かきくけこ"
default
P="不明"
コンパイル後
<p>パソコン</p>
次の例では変数fooが"a"または"ka"か"sa"かそれ以外の評価を行います。
Pug
- var foo = "ka"
case foo
when "a"
when "ka"
p="あいうえおかきくけこ"
when "sa"
p="さしすせそ"
default
P="不明"
コンパイル後
<p>あいうえおかきくけこ</p>
次の例では変数fooが"a"または"ka"の場合は何もしない場合の例です。
Pug
- var foo = "ka"
case foo
when "a"
when "ka"
- break
when "sa"
p="さしすせそ"
default
P="不明"
コンパイル後
条件演算子(三項演算子)
条件分岐を1行で行いたい場合には、条件演算子(三項演算子)を用いることができます。
条件演算子は、条件文 ? 一致した場合 : 不一致した場合
のように記述することができます。
次の例では、typeという変数の値がabcならfoo、それ以外ならbarというクラス名を付与するコードです。
Pug
p(class= type == "abc" ? "foo" : "bar")