HubLでは、テンプレートのロジックと機能を拡張するための主な演算子と式評価をサポートしています。演算子を使用すると、算術関数の実行、比較、テンプレートロジックの複雑化、マークアップのレンダリングの変更を行うことができます。この記事では、HubLで使用できる式評価も含めて紹介します。
記号 | 説明 |
---|---|
+ | 2つのオブジェクト(通常は数値)を加算します。文字列やリストを連結させるには、代わりに~ 演算子を使用する必要があります。 |
- | ある数値を別の数値から減算します。 |
/ | 数値を除算します。 |
% | 数値を除算した余りを返します。 |
// | 2つの数値を除算した余りを整数に切り捨てて返します。たとえば、{{ 20 // 7 }} は2 です。 |
* | 数値を乗算します。 |
** | 左辺のオペランドを右辺のオペランドで累乗します。 |
記号 | 省略形 | 説明 |
---|---|---|
== | eq | 次の値に等しい。2つのオブジェクトの値が等しい場合、trueと評価されます。 |
!= | ne | 次の値に等しくない。2つのオブジェクトが等しくない場合、trueと評価されます。 |
> | gt | 次の値より大きい。左辺のオペランドの値が右辺のオペランドの値よりも大きい場合、trueと評価されます。 |
>= | gte | 次の値以上。左辺のオペランドが右辺のオペランドと同じかそれよりも大きい場合、trueと評価されます。 |
< | lt | 次の値より小さい。左辺のオペランドが右辺のオペランドよりも小さい場合、trueと評価されます。 |
<= | lte | 次の値以下。左辺のオペランドが右辺のオペランドと同じかそれより小さい場合、trueと評価されます。 |
|selectattr()
などの式を評価するHubLフィルターで使用できます。記号 | 説明 |
---|---|
and | 左辺のオペランドと右辺のオペランドの両方がtruthyの場合にtrue を返します。それ以外の場合は、false を返します。この演算子は、Pythonの and 演算子やJavaScriptの&& 演算子のようには動作しません。and 演算子の使用の詳細については、以下をご覧ください。 |
or | 第1オペランドがtruthyの場合に、そのオペランドを返します。それ以外の場合は、第2オペランドを返します。 この演算子は、PythonおよびJavaScriptの or に || 相当します。or 演算子の使用の詳細については、以下をご覧ください。 |
is | 肯定文の2つのオペランドを結合します。 |
not | ステートメント(文)をis と組み合わせて否定します。 |
(expr) | 演算順を示すために、式をグループ化します。例:(10 - 2) * variable 。 |
? | 三項演算子を使用すると、条件付きロジックをすばやく記述できます。3つの引数(式、true条件、false条件)を受け入れます。式を評価し、該当した条件を返します。 |
or
演算子はPythonのor
演算子やJavaScriptの||
演算子のように動作します。式がtrueと評価された場合は第1オペランドを返し、それ以外の場合は第2オペランドを返します。or
演算子の一般的な使用例は、変数値が定義されていない場合のフォールバック値の設定です。
and
演算子は、Pythonのand
演算子やJavaScriptの&&
演算子とは異なる動作をします。HubLでは、and
は常にブール値を返します。式がtrueと評価された場合はtrue
が返され、それ以外の場合はfalse
が返されます。一方、PythonとJavaScriptの演算子は、ステートメント(文)がtrueとfalseのどちらとして評価されるかに基づいてオペランド値を返します。
[]
)と空のディクショナリー({}
)はfalsyと見なされます。これはPythonでの動作と同等ですが、[]
と{}
がtruthyであるJavaScriptとは異なります。
記号 | 説明 |
---|---|
in | 値がシーケンス内に含まれているかどうかをチェックします。 |
is | 式評価を実行します。 |
| | フィルターを適用します。 |
~ | 値を連結します。 |
==
演算子を使用して行うこともできます。
以下の例では、ループ内の投稿の合計数に応じてブログ記事の幅を調整します。この出力例では、ブログに4件の記事があると仮定しています。
even-post
クラスを割り当てます。それ以外の場合は、odd-post
クラスを割り当てます。
jobs
という変数が反復可能かどうかをチェックします。この変数にジョブのリストが格納されている場合、if文がtrue
と評価されて、ループが実行されます。変数に1つの値しか格納されていない場合は、if文により、別のマークアップを使用してその値が出力されます。ループの詳細については、こちらを参照してください。
null
値があるかどうかを評価します。
is
演算子と組み合わせて使用します。
is
演算子と組み合わせて使用します。
True
として評価されるかどうかを評価します。
以下の例では、ブール値チェックボックスモジュールを使用してアラートメッセージを表示します。
none
式評価とは異なります。undefined式評価でtrue
が返されるのは、変数が存在しても値が格納されていない場合です。一方、none式評価では変数にnull値が格納されている場合にtrue
が返されます。
以下の例では、テンプレートで変数”my_var”の有無をチェックします。
lower
式評価の例の逆バージョンです。