式の変換・判定(フィルタ)
ワークフローの式では、値に対して「変換」や「判定」を行う機能を フィルタ(filter) として提供しています。
一般的なプログラミング用語で言うと、入力(値)を受け取って出力(変換後の値)を返す関数に近いイメージです。
フィルタの読み方(パイプ記法)
|(パイプ)で左から右へ、値にフィルタを適用していきます。
{{ 'ABC' | to_lower | trim }}
この例は「'ABC' を小文字化して、前後の空白を取り除く」という意味になります。
フィルタを使えば、文字列処理・日時操作・パス処理・ハッシュ化など、幅広いデータ変換をシンプルに記述できます。
基本フィルタ
| フィルタ名 | 説明 | 例 |
|---|---|---|
size | 要素数を返す | {{ [1,2,3] | size }} → 3 |
type | 型名を返す | {{ 123 | type }} → Int32 |
文字列操作
| フィルタ名 | 説明 | 例 |
|---|---|---|
to_lower / to_upper / trim | 文字列の整形 | {{ 'ABC' | to_lower }} → abc |
contains / starts_with / ends_with | 一致判定 | {{ 'abc' | contains 'b' }} → true |
split / join | 分割と結合 | {{ 'a|b|c' | split '|' }} → [a,b,c] |
regex_match / regex_replace | 正規表現操作 | {{ 'abc' | regex_replace 'a' 'z' }} → zbc |
to_base64 / from_base64 | Base64変換 | {{ 'abc' | to_base64 }} → YWJj |
url_encode / url_decode | URL変換 | {{ 'a b' | url_encode }} → a%20b |
sha256 / md5 | ハッシュ化 | {{ 'abc' | sha256 }} |
JSON / YAML
| フィルタ名 | 説明 | 例 |
|---|---|---|
to_json / from_json | JSON変換 | {{ obj | to_json }} / {{ '{"a":1}' | from_json }} |
to_yaml / from_yaml | YAML変換 | {{ obj | to_yaml }} / {{ 'a: 1' | from_yaml }} |
ignoreNullsオプションで null を無視可能
例:{{ obj | to_json { ignoreNulls: true } }}
日時操作
| フィルタ名 | 説明 | 例 |
|---|---|---|
now / utcnow | 現在日時取得 | {{ now }} |
add_days / add_hours | 日時加算 | {{ '2024-01-01' | add_days 1 }} → 2024-01-02 |
format_date | 日付フォーマット | {{ '2024-01-01' | format_date 'yyyy/MM/dd' }} → 2024/01/01 |
コレクション操作
| フィルタ名 | 説明 | 例 |
|---|---|---|
sort / reverse | 並び替え | {{ [3,1,2] | sort }} → [1,2,3] |
unique / flatten | 重複除去・平坦化 | {{ [[1,2],[3]] | flatten }} → [1,2,3] |
パス操作
| フィルタ名 | 説明 | 例 |
|---|---|---|
path_filename / path_basename | ファイル名操作 | {{ '/a/b/file.txt' | path_filename }} → file.txt |
path_join / path_normalize | パス操作 | {{ ['a','b','c.txt'] | path_join }} → a/b/c.txt |
path_change_extension | 拡張子変更 | {{ '/tmp/data.txt' | path_change_extension '.json' }} → /tmp/data.json |
ユーティリティ
| フィルタ名 | 説明 | 例 |
|---|---|---|
uuid | UUID生成 | {{ uuid }} → 550e8400-e29b-41d4-a716-446655440000 |
random | 乱数生成 | {{ random 1 10 }} → 7 |
default / coalesce | デフォルト値処理 | {{ null | default 'x' }} → x |
is_null / is_empty | 判定フィルタ | {{ '' | is_empty }} → true |
パラメータ付きフィルタ記法
{{ obj | to_json { ignoreNulls: true } }}
利用例
# JSON文字列をデコードして項目を抽出
{{ '{"a":1,"b":2}' | from_json | size }} → 2
# ファイルパスから拡張子を変更
{{ '/tmp/data.txt' | path_change_extension '.json' }} → '/tmp/data.json'
# 現在日時を整形
{{ now | format_date 'yyyy-MM-dd HH:mm' }}