関数索引
group() 関数は、与えられた目次に含まれるページを、同じ特徴をもつページごとにグループ化します。
たとえば「都道府県」という名前の要素をもっているページを含む目次と、要素名「都道府県」を group() 関数に与えることで、与えられた目次を「都道府県」の値が同じになっているページごとにグループ化することができます。各グループは、「都道府県」の値が「東京」となっているページのグループ、「大阪」となっているページのグループ、などになります。
group() 関数には目次と式を与えます。目次はグループ化の対象となるページ群を指定します。また、式には、あるページがどのグループに属するべきかを決めるための式を与えます。group() 関数は、目次に含まれる各ページごとに与えられた式の値を求め、その値が同じになるページごとにグループを構成します。
group() 関数の戻り値は配列です。この配列の各要素は分類した結果得られたそれぞれのグループをあらわしています。例えば、与えられた目次が結果として4つのグループに分類されたならば、戻り値の配列の長さは4となります。group()関数の戻り値の配列の各要素は、name と list という二つの要素を持ったデータです。name には与えた式の結果値が入っています。また、list には式の値が name に入っている値となったページの配列(目次)が入っています。list の中でのページの並び順は、最初に指定した目次の中での並びと同じです。
group() 関数の戻り値は wr-for 拡張タグの list に指定して使用可能です。
グループ化したいページ群を含む目次を指定します。
式:任意の式を与えます。group() は、目次に含まれる各ページにおいて、この式の値を求めます。得られた値が同じになるページ同士がひとつのグループを構成するようにグループ分けが行われます。
もっとも一般的な使い方では、式として目次に含まれるページが持っている要素の名前を指定します。この場合、目次は、ここで指定した要素の値が同じページごとにグループ化されます。
式には「条件式」を指定することも可能です。例えば、式に「都道府県 == ¥"東京¥"」といった式を与えることで、目次に含まれる各ページの要素「都道府県」の値が「東京」となっているページ群とそうでないページ群にグループ化することができます。
group() 関数を使って、目次「ニュース目次」に含まれるページを、各ページの「リリース日」ごとに分類します。分類された結果を使って各ページのタイトルを「リリース日」ごとにグループ化して表示します。
<wr-for list="group(ニュース目次, ¥"リリース日¥")" variable="x">
%x.name%日のニュース<br>
<wr-for list="x.list" variable="y">
%y.タイトル%<br>
</wr-for>
</wr-for>
group()の結果をさらにgroup()で細分化することも可能です。この場合、細分化するための group()関数の呼び出しには、1回目の group() 関数の呼び出しの結果得られた配列の各要素の list の値と、細分化するための式を与えてください。
ページをカテゴリごとに分類することでカテゴリ別目次を作成することができるでしょう。
wr-variable, wr-append 拡張タグを併用して展開の先頭部分で目次の加工を行っておくと、展開全体の見通しをよくすることができます。
group 関数は繰り返しのあるグループ項目に対しても使用することができます。