api:enum

Version 25.3.9411


api:enum


api:enum キーワードを使用して、アイテム内のアトリビュート、区切りリスト、指定された値の範囲、および複数値のアトリビュートの値を列挙します。api:enum のボディは、反復されるセットのエレメントごとに実行されます。

パラメータ

  • item:アトリビュートを反復するアイテムの名前。
  • attr:どのアトリビュートを反復するかを指定する、マッチするエクスプレッション。例えばapi:* です。このパラメータを指定して、複数値のパラメータの値を反復することもできます。
  • prefix:アイテムが列挙される基になる接頭辞。
  • expand:複数値のアトリビュートが検出された場合に、どのようにapi:enum が挙動するかを指定するboolean 値。true に設定されている場合、api:enum のボディはアトリビュートのそれぞれの値につき一度づつ実行されます。false の場合、すべての値は、1つの文字列値として結合され、一度の反復のみが実行されます。デフォルトで、api:enum はすべての値をexpand しません。
  • sep[arator]expand パラメータがfalse の場合に、複数値のアトリビュートの値を結合させるために使われるセパレータ。またseparator は、listseparator が定義されていない場合にリストの値をトークン化するためにも使われます。デフォルトは、改行文字(\n)です。
  • list:列挙する区切られた値のリスト。例えば、値のリストがviolet, indigo, blue, green, yellow, orange, red で、セパレータがカンマ(,)の場合、api:enum のスコープは虹の色ごとに実行されます。
  • range:昇順、降順で列挙される数字もしくは文字の範囲。例えば、a..z またはZ..A です。
  • recurse:ネストされたアトリビュートを列挙されるかどうか。デフォルトはtrue です。

Notes:

  • range アトリビュートまたはitem アトリビュートのいずれかを指定できますが、両方指定することはできません。
  • アトリビュートは、アルファベット順に列挙されます。

アトリビュートの制御

  • _attr:反復されるアトリビュートの名前。複数値のアトリビュートの値を反復している場合、名前の一部としてindex を持つ以外はアトリビュート名は同じです。Index は、ハッシュ記号(#)で名前と区別されます。例えば、name#1name#2、などです。
  • _index:アイテムでアトリビュートが出現するindex、もしくはリストエレメントが現在列挙されている位置。
  • _value:反復されるアトリビュートの値。複数値のアトリビュートでは、expand およびseparator 設定は、_value が1つのアトリビュート値の参照なのか、すべてのアトリビュート値の参照なのかを決定します。
  • _count:アトリビュート内またはリスト内の値の数。
  • _separator:リスト内の値を区切るセパレータ。

"input" と名付けられたアイテムのアトリビュート名とアトリビュート値を表示します:

<api:set item="input" attr="Greeting" value="Hello" />
<api:set item="input" attr="Goodbye" value="See ya" />
<api:enum item="input">
  [_attr] is [_value]
  <br/>
</api:enum> 
goodbye is See ya greeting is Hello

値のリストを列挙するには、list およびseparator api:enum パラメータを使用します。例えば、次のコードはcolors アトリビュートで指定された色をリストします:

<api:set attr="colors" value="violet, indigo, blue, green, yellow, orange, red"/>
<api:enum list="[colors]" separator=",">
  [_value] 
</api:enum>

値の範囲を列挙するには、range アトリビュートを使用します。例えば、次のコードはa からz、Z からA の文字セット、および1 から25 の数字をリストします:

<api:enum range="a..z">
  [_value] 
</api:enum>
<api:enum range="Z..A">
  [_value] 
</api:enum>
<api:enum range="1..25">
  [_value] 
</api:enum>

複数値のアトリビュートの値すべてを列挙するには、attr アーギュメントを使用して複数値のアトリビュートを指定し、expand をtrue に設定します:

<api:set attr="foo.email#1" value="[email protected]"/>
<api:set attr="foo.email#2" value="[email protected]"/>
<api:enum attr="foo.email" expand="true">
    ([_index]) [_attr] -> [_value]
</api:enum>

上の例では、次のアウトプットが得られます:

(1) email#1 -> [email protected] (2) email#2 -> [email protected]

関連項目

  • api:breakapi:call またはapi:enum の反復を終了する。
  • api:continueapi:call またはapi:enum の反復をスキップする。
  • api:first:最初の反復で特別な処理を行う。
  • api:last:最後の反復で特別な処理を行う。