注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Handlebar helpers

ヘルパーは、Handlebars テンプレート内から呼び出すことができる事前定義された関数です。ヘルパーには名前、パラメーター、戻り値があります。例えば、テンプレート {{add 5 var1}} は、整数 (5) と var1 という名前の変数に対して add ヘルパーを呼び出します。var1 が 7 に設定されている場合、テンプレートは 12 に評価されます。

ヘルパーは以下のカテゴリのいずれかに分類されます。

  • 組み込みヘルパー - Handlebars ライブラリから
  • コアヘルパー - クエリやウィジェット内で使用可能
  • ウィジェットヘルパー - ウィジェット内でのみアクセス可能
  • Foundry ヘルパー - Foundry クエリ内でのみアクセス可能
  • SQL ヘルパー - SQL クエリ内でのみアクセス可能

ヘルパーは Functions エディタでは使用できません。

組み込みヘルパー

以下のヘルパーは Handlebars ライブラリから提供されています。各ヘルパーについては Handlebars documentation ↗ を参照してください。

コアヘルパー

以下のコアヘルパーはクエリやウィジェット内で使用可能です。

toString

toString ヘルパーは、任意の値を JavaScript String() ↗ 関数を使用して文字列に変換します。

  • 文字列に対して toString を使用する場合
    • {{toString 'hello'}} は "hello" としてレンダリングされます。
  • 数値に対して toString を使用する場合
    • {{toString 1}} は "1" としてレンダリングされます。
  • 文字列配列に対して toString を使用する場合
    • {{toString variable}}(コンテキストが { variable: ["hello", "world"] })は "hello,world" としてレンダリングされます。
  • 数値配列に対して toString を使用する場合
    • {{toString variable}}(コンテキストが { variable: [1, 2, 3] })は "1,2,3" としてレンダリングされます。
  • オブジェクトに対して toString を使用する場合
    • {{toString variable}}(コンテキストが { variable: {"hello": "world"} })は "[Object Object]" としてレンダリングされます。

toNumber

toNumber ヘルパーは、任意の値を JavaScript Number() ↗ 関数を使用して数値に変換します。値が数値に変換できない場合、NaN を返します。

  • 数値に対して toNumber を使用する場合
    • {{toNumber 1}} は 1 としてレンダリングされます。
  • 数値を表す文字列に対して toNumber を使用する場合
    • {{toNumber '2'}} は 2 としてレンダリングされます。
  • 数値を表さない文字列に対して toNumber を使用する場合
    • {{toNumber 'hello'}} は NaN としてレンダリングされます。
  • 配列に対して toNumber を使用する場合
    • {{toNumber variable}}(コンテキストが { variable: [1, 2, 3] })は NaN としてレンダリングされます。
  • オブジェクトに対して toNumber を使用する場合
    • {{toNumber variable}}(コンテキストが { variable: {"hello": "world"} })は NaN としてレンダリングされます。

concat

concat ヘルパーは任意の数の引数を取り、最初に各引数を JavaScript String() 関数で文字列に変換してから連結します。

  • 2つの数値に対して concat を使用する場合
    • {{concat 1 2}} は "12" としてレンダリングされます。
  • 2つの文字列と数値に対して concat を使用する場合
    • {{concat 'hello' 'world' 2}} は "helloworld2" としてレンダリングされます。
  • 2つの文字列配列に対して concat を使用する場合
    • {{concat array1 array2}}(コンテキストが { array1: ["hello", "world"], array2: ["again", "and again"] })は "helloworldagainand again" としてレンダリングされます。
  • 3つの数値とオブジェクトに対して concat を使用する場合
    • {{concat 1 2 3 variable}}(コンテキストが { variable: {"hello": "world"} })は "123[Object Object]" としてレンダリングされます。

substring

substring ヘルパーは、入力文字列(値)と開始位置および終了位置(任意)を受け取り、それを JavaScript substring() 関数に渡します。これにより、入力文字列のサブ文字列を取得できます。

  • 文字列に対して substring を使用する場合
    • {{substring 'foo' 0 1}} は "f" としてレンダリングされます。
  • 入力文字列が終了位置よりも短い場合
    • {{substring 'foo' 0 6}} は "foo" としてレンダリングされます。
  • 終了位置を指定しない場合
    • {{substring 'foo' 1}} は "oo" としてレンダリングされます。

contains

contains ヘルパーは、配列または文字列(値)と検索する値(searchValue)を受け取り、値が配列に含まれている場合は true を、それ以外の場合は false を返します。これは value.indexOf(searchvalue) !== -1 を呼び出すことで実行されます。

  • 配列に対して contains を使用する場合
    • {{contains variable 3}}(コンテキストが { variable: [1, 2, 3] })は true としてレンダリングされます。
  • 文字列に対して contains を使用する場合
    • {{contains variable "hello"}}(コンテキストが { variable: "hello world" })は true としてレンダリングされます。

jsonParse

jsonParse ヘルパーは、JSON 文字列を入力として受け取り、JavaScript の JSON.parse ↗ 関数を使用して解析します。

  • JSON 文字列化された文字列に対して jsonParse を使用する場合
    • {{jsonParse '\"foo\"'}} は "foo" としてレンダリングされます。
  • JSON 文字列化された配列に対して jsonParse を使用する場合
    • {{jsonParse varA}}(コンテキストが "[\"hello\",\"world\"]")は ["hello", "world"] としてレンダリングされます。
  • JSON 文字列化されたオブジェクトに対して jsonParse を使用する場合
    • {{jsonParse varA}}(コンテキストが "{\"varA\":{\"hello\":\"world\",\"foo\":[\"bar\",\"baz\"]}}")は { varA: {"hello": "world", "foo": ["bar", "baz"]} } としてレンダリングされます。
  • 数値に対して jsonParse を使用する場合
    • {{jsonParse 123}} はコンソールに "jsonParse: Error: value must be a string" というエラーを表示します。
  • 無効な JSON 文字列に対して jsonParse を使用する場合
    • {{jsonParse varA}}(コンテキストが "[\"hello\",")はコンソールに "jsonParse: SyntaxError: Unable to parse JSON string" というエラーを表示します。

jsonStringify

jsonStringify ヘルパーは任意のオブジェクトを入力として受け取り、そのオブジェクトを JSON に変換して返します(JavaScript の JSON.stringify ↗ 関数に渡します)。

  • 文字列に対して jsonStringify を使用する場合
    • {{jsonStringify 'foo'}}"foo" としてレンダリングされます(ダブルクオートが含まれます)。
  • オブジェクトに対して jsonStringify を使用する場合 {{jsonStringify varA}}(コンテキストが { varA: {"hello": "world", "foo": ["bar", "baz"]} })は {"hello":"world","foo":["bar","baz"]} としてレンダリングされます(再びダブルクオートが含まれます)。

add

add ヘルパーは 2 つの数値を加算します。

  • 2つの数値に対して add を使用する場合
    • {{add 20 5}} は 25 としてレンダリングされます。
  • 数値でない値に対して add を使用する場合
    • {{add 10 'abc'}} はコンソールに "value must be a number" というエラーを表示します。

subtract

subtract ヘルパーは、第2引数の数値を第1引数の数値から引きます。

  • 2つの数値に対して subtract を使用する場合
    • {{subtract 20 5}} は 15 としてレンダリングされます。
  • 数値でない値に対して subtract を使用する場合
    • {{subtract 10 'abc'}} はコンソールに "value must be a number" というエラーを表示します。

multiply

multiply ヘルパーは 2 つの数値を掛け合わせます。

  • 2つの数値に対して multiply を使用する場合
    • {{multiply 20 5}} は 100 としてレンダリングされます。
  • 数値でない値に対して multiply を使用する場合
    • {{multiply 10 'abc'}} はコンソールに "value must be a number" というエラーを表示します。

divide

divide ヘルパーは、第1引数の数値を第2引数の数値で割ります。

  • 2つの数値に対して divide を使用する場合
    • {{divide 20 5}} は 4 としてレンダリングされます。
  • 数値でない値に対して divide を使用する場合
    • {{divide 10 'abc'}} はコンソールに "value must be a number" というエラーを表示します。

max

max ヘルパーは、任意の数値または数値の配列から最大値を見つけます。

  • 数値の配列に対して max を使用する場合
    • {{max variable}}(コンテキストが { variable: [1, 2, 3] })は 3 としてレンダリングされます。
  • 数値の配列と2つの数値に対して max を使用する場合
    • {{max variable 12 15}}(コンテキストが { variable: [1, 2, 3] })は 15 としてレンダリングされます。
  • 文字列に対して max を使用する場合
    • {{max 'hello' 123}} はコンソールに "value must be a number or a number array" というエラーを表示します。
  • 無効な配列に対して max を使用する場合
    • {{max variable}}(コンテキストが { variable: ["hello", "world"] })はコンソールに "value must be a number or a number array" というエラーを表示します。

min

min ヘルパーは、任意の数値または数値の配列から最小値を見つけます。

  • 数値の配列に対して min を使用する場合
    • {{min variable}}(コンテキストが { variable: [1, 2, 3] })は 1 としてレンダリングされます。
  • 数値の配列と2つの数値に対して min を使用する場合
    • {{min variable 6 10}}(コンテキストが { variable: [1, 2, 3] })は 1 としてレンダリングされます。
  • 文字列に対して min を使用する場合
    • {{min 'hello' 123}} はコンソールに "value must be a number or a number array" というエラーを表示します。
  • 無効な配列に対して min を使用する場合
    • {{min variable }}(コンテキストが { variable: ["hello", "world"] })はコンソールに "value must be a number or a number array" というエラーを表示します。

eq

eq ヘルパーは、2 つの数値または文字列を比較し、それらが等しいかどうかを確認します。

  • 2つの数値に対して eq を使用する場合

    • {{eq 1 1}} は true としてレンダリングされます。
  • 数値または文字列でない値、または異なる型の値に対して eq を使用する場合

    • {{eq [1, 2] 5}} はコンソールに "type mismatch" というエラーを表示します。
  • if ブロック内で eq を使用する場合

    {{#if (eq name 'Steven')}}
      ユーザーの名前はStevenです。
    {{else}}
      ユーザーの名前はStevenではありません。
    {{/if}}
    

    コンテキストが { name: "Steven" } の場合は "ユーザーの名前はStevenです。" としてレンダリングされます。

ne

ne ヘルパーは、2 つの数値または文字列を比較し、それらが異なるかどうかを確認します。

  • 2つの数値に対して ne を使用する場合
    • {{ne 1 1}} は false としてレンダリングされます。
  • 数値または文字列でない値、または異なる型の値に対して ne を使用する場合
    • {{ne [1, 2] 5}} はコンソールに "type mismatch" というエラーを表示します。

lt

lt ヘルパーは、2 つの数値または文字列を比較し、最初の値が2番目の値より小さいかどうかを確認します。

  • 2つの数値に対して lt を使用する場合
    • {{lt 1 2}} は true としてレンダリングされます。
  • 数値または文字列でない値、または異なる型の値に対して lt を使用する場合
    • {{lt [1, 2] 5}} はコンソールに "type mismatch" というエラーを表示します。

le

le ヘルパーは、2 つの数値または文字列を比較し、最初の値が2番目の値以下かどうかを確認します。

  • 2つの数値に対して le を使用する場合
    • `{{le 1 1}}