単純なアクセスに加えて、構成を使用して、ワークフロー マークアップのさまざまなバージョンを生成できます。たとえば、複数のテキスト入力でループを使用してマークアップを生成したり、チェックボックス入力に応じて条件付きでマークアップを生成したりできます。

ヘルパー関数は、多くの場合、この目的に最適です。次のセクションでは、使用可能なヘルパーとその使用方法について説明します。

一般助っ人

以下は、キーワードとその説明のリストとコード例です。

  • 割り当てる
    • 説明: 変数を割り当てることができます。
    • 対応する値を出力としてコンテキスト内の myVal 変数を使用したコード例:
{#assign "myval"}
これは変数
{/assign}です 
  • 数学
    • 説明: 単純な算術演算 (+/-*) %を実行できるようにします。
    • コード例:
{数学myNum"+"5}
    • 説明: 現在のループ・インデックスには、 を介して @index アクセスでき、現在のキー名には から @keyアクセスできます。また @first 、 と @lastを使用して、イテレーションの最初/最後のステップにいるかどうかを確認することもできます
    • 出力として "0 1 2 3 4" などの値を持つコード例:
{#each myObj}
{@index}
{/それぞれ}
  • 対して
    • 説明: 単純な繰り返しを可能にする for ループを作成できます。 ==,>,,<,>= と演算子 <= として使用できます。ハッシュ パラメーターを使用して、カウンターをインクリメントまたはデクリメントできます。
    • コード例:
{#for 5 ">" 0 after="-2"}
{これ}
{/for}
  • 比べる
    • 説明: 2 つの値を比較できます。 ==!=<<=は演算子 equalsIgnoreCase として使用できます。
    • myStr 変数が "Hello" の場合に出力として TRUE を指定するコード例:
{comapre myStr "==" "ハロー}
  • スイッチ, ケース用
    • 説明: switch/case 構文を作成できます。
    • type が "article" の場合に "This is an article." を出力として返すコード例:
{#switch タイプ}
{#case "記事"}
これは記事
です{/case}
{#case "resource"}
これはリソース
です{/case}
  • もし
    • 説明: 条件が満たされた場合にテキストブロックを挿入できます。
    • ブール変数 isCar=falsehasLicense=true:
{#if (または (and isCar hasPlate) (and (not isCar) hasLicense)))}
運転が許可されています。
{その他}
運転は許可されていません。
  • 限り
    • 説明: 逆条件が満たされた場合にテキストブロックを挿入できます。
    • 次の場合に trueVar=true"This is text" を出力として提供するコード例:
{trueVar でなければ}
これはテキスト
{/unless}です
  • そして
    • 説明: 複数のブール値の論理 AND として機能します。
    • 変数に応じて出力として返す TRUE コード FALSE 例:
{と isCar hasPlate}
  • 又は
    • 説明: 複数のブール値の論理 OR として機能します。
    • 変数に応じて出力として返す TRUE コード FALSE 例:
    • コード例:
{または isCar hasPlate}
  • じゃない
    • 説明: 複数のブール値の論理 NOT として機能します。
    • 次の場合にisCar=false出力として返すTRUEコード例:
{isCarではない}
  • 徴収
    • 説明: コレクションのサイズまたはシングルトン プロパティを返すことができます。
sizeis_not_singleton、および演算子 is_singleton として使用できます。
  • サイズ(例: "4")を出力として返すコード例:
  • {コレクションmyColl "サイズ"}
    
    • 探索
      • 説明: 変数を使用して動的パラメータ解決を行い、たとえば、配列インデックスの値を解決できます。
      • コード例:
    {#each バー}
    {ルックアップ../foo@index}
    {/each}
    
      • 説明: ヘルパーにパラメーターを渡すために使用できます。
      • コード例:
    {#with myVal}
    {#ech myObj}
    {/それぞれ}
    {/with}
    

    文字列ヘルパー

    以下は、キーワードとその説明のリストとコード例です。

    • caseフォーマット
      • 説明: 文字列 ("lowercase"、、 "lowercase_underscore"または "lowercase_hyphen") に特定の書式を適用できます。
      • "This is a string" などの文字列を "this_is_a_string" に再フォーマットするコード例:
    {caseFormat myStr "lowercase_underscore"}
    
    • capitalizeFirst(キャピタライズファースト)
      • 説明: 文字列の最初の文字を大文字にすることができます。
      • "teamViewer" などの文字列を "TeamViewer" として再フォーマットするコード例:
    {capitalize最初の値}
    
    • 切る
      • 説明: 特定の文字列から引数のすべての値を削除できます
      • "String with spaces" などの文字列を "Stringwithspaces" として再フォーマットするコード例:
    {カット値 " "}
    
    • defaultIfEmpty (デフォルト IfEmpty)
      • 説明: 評価が を返した場合 FALSEに使用する代替値を定義できます。それ以外の場合は、元の値が使用されます。
      • value 変数が空の場合に出力として "nothing" を提供するコード例:
    {defaultIfEmpty 値 "nothing"}
    
    • 接続
      • 説明: 配列をイテレータで結合したり、反復可能オブジェクトを文字列で結合したりできます。
      • 値 "a"、"b"、および "c" のみを含む配列の出力として "a // b // c" を提供するコード例:
    {join "a", "b", "c" " // " prefix="" suffix=""}
    
    • センター
      • 説明: 指定した幅のフィールドの値を中央揃えにすることができます。
      • コード例:
    {中心の値 size=19 pad=" "}
    
    • ljustの
      • 説明: 指定した幅のフィールドの値を左揃えにすることができます。
      • コード例:
    {ljust値20パッド= ""}
    
    • rjustの
      • 説明: 指定した幅のフィールドの値を右揃えにすることができます。
      • コード例:
    {rjust 値 20 pad=" "}
    
    • サブスト リング
      • 説明: 文字列を部分文字列に分割できます。
      • "TeamViewer" を元の値として文字列を処理した後、それぞれ "Viewer" と "Team" を出力として提供するコード例:
    {部分文字列値 3}
    {部分文字列値 0 3}
    
    • 下げる
      • 説明: 文字列をすべて小文字のテキストに変換できます。
      • "TeamViewer" などの文字列を "teamviewer" として再フォーマットするコード例:
    {低い値}
    
    • アッパー
      • 説明: 文字列をすべて大文字のテキストに変換できます。
      • "Hello" などの文字列を "HELLO" として再フォーマットするコード例:
    {上限値}
    
    • スラッグ化
      • 説明: 文字列をすべて小文字に変換し、同時に単語以外の文字(英数字とアンダースコア)を削除したり、スペースをハイフンに変換したりできます。さらに、末尾の空白はトリミングされます。
      • "TeamViewer is great" などの文字列を "teamviewer-is-great" に再フォーマットするコード例:
    {スラッグ化値}
    
    • 文字列フォーマット
      • 説明: 特定の引数に従って変数を書式設定できます(文字列の書式設定指定子として機能します)。
      • "Hello TeamViewer" を出力value="Hello %s"param1="TeamViewer"として提供するコード例:
    {stringFormat 値 param1}
    
    • 文字列タグ
      • 説明: すべての HTML タグと XHTML タグを削除できます。
  • コード例:
  • {stripTags 値}
    
    • 大文字
      • 説明: 空白で区切られた文字列内のすべての単語を大文字にすることができます。
      • "my first post" などの文字列を "My First Post" として再フォーマットするコード例:
    {値を完全に大文字にする=false}
    
    • 略す
      • 説明: 文字列が指定した文字数より長い場合に、文字列を切り捨てることができます。切り捨てられた文字列は、翻訳可能な省略記号文字 ("...")
      • "TeamViewer is great" などの文字列を "TeamVi...":
    {値の省略形 6}
    
    • ワードラップ
      • 説明: 指定した行の長さで単語を折り返すことができます。
      • "My words are long" などの文字列を "My\r\nwords\r\n are\r\n long" として再フォーマットするコード例:
    {wordWrap 値 5}
    
    • 取り替える
      • 説明: リテラルのターゲット・シーケンスに一致する文字列の特定の部分文字列の各オカレンスを、指定したリテラル置換シーケンスで置換できます。
      • "Handlebars ..." を "Handlebars rocks" として表示します。
    {値を置き換える "..." "岩"}
    
    • ええ
      • 説明: 、FALSE、および(オプションで)NULLの値をTRUE、「yes」、「no」、「maybe」などの値を持つ文字列にマップできます。
      • コード例:
    {yesno value yes="yes" no="no" maybe="maybe"}
    
    • 日付フォーマット
      • 説明: 日付に特定の書式を適用できます。format オプションは、パラメータまたはハッシュ (つまり、names パラメータ) として指定できます。次のオプションを使用できます。
        • "full" をクリックして、「Tuesday, June 19, 2012」 などの形式で日付を表示します。
        • "medium" をクリックして、"Jun 19, 2012" などの形式で日付を表示します。
        • "short" 日付を "6/19/12" などの形式で表示するには
        • "pattern" をクリックして、日付をカスタムパターンで表示します。
      • コード例:
    {dateFormat date ["フォーマット"]
    [format="フォーマット"]
    [tz=timeZone|timeZoneId]}
    
    • 数値フォーマット
      • 説明: "integer"、"currency"、"percent"、および "pattern" のいずれかの書式設定パラメーターを使用できます。その他の利用可能なオプションは次のとおりです。
        • groupingUsed を使用して、グループ化をフォーマットで使用するかどうかを定義します。
        • maximumFractionDigits 小数部分で許容される最大桁数を定義するには
        • maximumIntegerDigits 整数部分の最大桁数を定義するには
        • minimumFractionDigits 小数部分の最小桁数を定義するには
        • minimumIntegerDigits 整数部分の最小桁数を定義するには
        • parseIntegerOnly 数値を整数のみとして解析するかどうかを定義するには
        • roundingMode数値の四捨五入方法を定義するには ( UP、 、 、 HALF_EVENUNNECESSARYFLOORHALF_DOWNHALF_UPDOWNCEILING
      • コード例:
    {numberFormat number ["format"] [locale=default]}
    

    以下は実際の例です。

    "General": {
              "use_camera": {
                  "title": "スマートグラスのカメラを使用する",
                  "inputType": "checkbox-input",
                  "value": "true"
              }
        }
    }<
    onresume>
        <rule id="auto">
            <expression>1</expression><
            actions>
                §{#if General.use_camera.value}§
                <action ref="start_cam"/>
                §{/if}§
            </actions>
        </rule><
    /onresume>
    

    ご覧のとおり、ここでの if キーワードを使用すると、対応する構成パラメーターがtrueに設定されている場合にのみアクションを実行できます。すべてのキーワードは、最初にハッシュタグ(#)を書き込むことによってスコープ内で使用されることに注意することが重要です。

    each キーワードを使用した別の例を次に示します。

    {
        "構成": {
            "buttons": {
                "title": "ファンクションキー",
                "inputType": "multiple-dropdown-input",
                "elements": [
                    {
                        "name": "TAB",
                        "content": "ANDRRES_key_tab",
                        "type": "TEXT",
                        "translatable": true
                    },
                    {
                        "name": "DELETE",
                        "content": "ANDRRES_key_delete",
                        "type": "TEXT",
                        "translatable": true
                    },
                    {
                        "name": "BACKSPACE",
                        "content": "ANDRRES_key_backspace",
                        "type": "TEXT",
                        "translatable": true
                    },
                    {
                        "name": "F1",
                        "content": "F1",
                        "speech_cmd": "F 1",
                        "type": "TEXT"
                    },
                    {
                        "name": "F2",
                        "content": "F2",
                        "speech_cmd": "F 2",
                        "type": "TEXT"
                    }
                ],
                "value": [
                    {
                        "name": "TAB",
                        "content": "ANDRRES_key_tab",
                        "type": "TEXT",
                        "translatable": true
                    },
                    {
                        "name": "DELETE",
                        "content": "ANDRRES_key_delete",
                        "type": "TEXT",
                        "translatable": true
                    }
                ]
            }
        }
    }<ui_update
    id="show_key_input_footer">
        <widget_params>
            <ui_element name="FOOTER_L2">
                <param name="VISIBILITY">INVISIBLE</param><
            /ui_element>
            <ui_element name="RETURN_L1"><
                param name="menu_id" descriptor="">0</param>
            </ui_element>
            §{#each Configuration.buttons.value}§
                <ui_element name="§{name}§">
                    <param name="menu_id" descriptor="">§{math @index "+" 1}§</param><
                /ui_element>
                §{#if@last}§
                    §{#if Configuration.enable_camera.value}§
                        <ui_element name="CAMERA">
                            <param name="MENU_ID">§{math @../index "+" 2}§</param><
                        /ui_element>
                        <ui_element name="ENTER">
                            <param name="MENU_ID">§{math @../index "+" 3}§</param><
                        /ui_element>
                    §{else}§
                        <ui_element name="ENTER">
                            <param name="MENU_ID">§{math @..
    /index "+" 2}§</param> </ui_element> §{/if}§ §{/if}§ §{/each}§ </widget_params> </ui_update>

    この例では、複数レベルのドロップダウン メニューを使用して、ユーザー インターフェイスに表示されるいくつかのボタンを構成します。最後の 2 つのボタンについては、チェックボックス入力が設定されているかどうかに応じてバーコードスキャンが行われ、別のデフォルトボタンもあります。両方のボタンは、インターフェイスの右端に表示されます。ここでわかるように、このような高度に構成可能なコンポーネントを作成することもできます。