式について
Gravio4では様々なところで式を使用しています。
PreMappings/PostMappings/Filterなどのコンポーネントのプロパティとトリガーの式比較を選んだ時です。
式はgval( https://github.com/PaesslerAG/gval )で実装されており、ここに記述されている機能は全て使えるはずです。
(Gravio4独自に拡張している関数がありますがそれらは別途記述。というか絶賛改良中なのでおちついたらあらためて書きます)
式を使用するところは、代入を伴う場合はどの型でも返すことができますが、代入を伴わない場合はBool型を返すように記述することができます。
ですが、Bool型を返す必要がある場合でも、例えば数値系の0はfalse、それ以外はtrueになるように型変換が自動で行われるので、あまり気にしなくても使える手軽さはあると思います。
代入が伴う箇所はPreMappingsとPostMappingsのみでそれ以外は代入がありません(今回の版では隠すことにしたMapというコンポーネントがあるのですが、これは代入があります)。
Bool型を返すには、数値や文字列などに対して比較演算をすると返すことができます。
cv.Payload > 10
cv.Payload "abc"
もちろん、リテラルで直接返すこともできます。
true
使用できるパラメータについて
PreMappings/PostMappingsについてはtp/tv/ap/av/cp/cvが使用できます。
tp/tv/ap/av/cp/cvについては下記コンポーネントでの式でも使用できます。
コンポーネント
今のところ式をプロパティとして持つコンポーネントは以下のものがあります。
Filter/Map(非公開)/Sort(非公開)/Search(非公開)/Split
(非公開のものはここでは触れないことにします)
Filterコンポーネントは入力Payloadを通過させ次のコンポーネントに渡すかを選択できるコンポーネントです。
通過させるかの条件を式で入力することができます。trueの時は通過させ、falseの時は通過しません。
上記tp/tv/ap/av/cp/cvを比較対象として条件を入力することができます。
Payloadを対象としPayloadが数値系なら
cv.Payload > 10
文字列系なら(gvalは標準で正規表現比較ができる)
cv.Payload =~ "^abc"
JSON配列なら
cv.Payload[1] > 10
JSON Objectなら
cv.Payload.key1 “abc”
Splitコンポーネントは入力Payloadが文字列なら改行毎に、JSON配列なら要素毎に分割して次のコンポーネントに渡すコンポーネントです。
Splitコンポーネントでは分割後の要素を次にコンポーネントに渡すかどうかのフィルタ機能も持ち合わせており、条件を式で入力することができます。
パラメータとして、分割後の要素は Value 、何番目の要素なのかを Index で参照することができます。
(tp/tv/ap/av/cp/cvも参照可能です)
abcで始まる要素だけを次のコンポーネントに渡す
Value =~ “^abc”
偶数番目の要素だけを渡す
Index % 2 == 0
Post your comment on this topic.