-
Notifications
You must be signed in to change notification settings - Fork 1
Text::Xslate::Manual::Builtin.ja
Text::Xslate::Manual::Builtinの日本語訳です。
Text::Xslateのバージョン1.5006から訳出しました。
Text::Xslate::Manual::Builtin - Xslateの組み込みメソッドと、フィルター/関数
この文書は、Xslateの組み込みメソッドと、フィルター/関数について説明しています。
Xslateエンジンは コンテキスト を考慮しないため、Perlで同様に処理すれば値のリストが返るときでさえ、すべてのメソッドとフィルター/関数は単一の値を返しますので、気を付けてください。
オプションの関数がText::Xslate::Bridge::Star.jaで定義されていることに留意してください。
Xslateエンジンはオートボクシングをサポートしているので、プリミティブな(オブジェクトでない)値に対してメソッドを呼び出すことができます。 組み込みメソッドは以下の通りです。
組み込みメソッドは何も提供されていませんが、 nil
は nil
という固有の名前空間を備えています。
組み込みメソッドは何も提供されていませんが、スカラー値の名前空間は scalar
です。
配列リファレンスの名前空間は array
です。
真を返します。【訳注:不要な行?】
$a の要素数を返します。
$a の要素を結合して、 $separator で区切られた一つの文字列にして返します。
逆順にされた $a の要素から成り立つ配列リファレンスを返します。
$a を並び替えて、新しい配列リファレンスにして返します。 オプションである $callback は、Perlの文法と同じように指定します。
例えば:
: my $a = [2, 1, 10];
: # アルファベット順の並べ替え(デフォルト)
: $a.sort().join(" "); # 1 10, 2
: # 明示的にアルファベット順で並べ替える
: $a.sort(-> $a, $b { $a cmp $b }).join(" "); # 1, 10, 2
: # 数値順で並べ替える
: $a.sort(-> $a, $b { $a <=> $b }).join(" "); # 1, 2, 10
perlfunc/"sort"もご覧ください。
$a の要素それぞれについて $callback の式を評価し、そのそれぞれの評価結果から構成された新しい配列リファレンスを返します。
perlfunc/"map"もご覧ください。
$callback を複数回呼び出すことによって、 $a を減少させます。
$a が空の場合、このメソッドは nil
を返します。
例えば:
: my $a = [10, 20, 30];
: # 合計
: $a.reduce(-> $a, $b { $a + $b }); # 60
: # 結合
: $a.reduce(-> $a, $b { $a ~ $b }); # 102030
: # 最小
: $a.reduce(-> $a, $b { $a min $b }); # 10
: # 最大
: $a.reduce(-> $a, $b { $a max $b }); # 30
List::Util/"reduce"もあわせてお読みください。
$a および $v から成り立つ、新しい配列リファレンスを返します。
$v は配列リファレンスもしくはスカラー値です。
ハッシュリファレンスの名前空間は hash
です。
$h のエントリー【訳注:キーと値の組】の数を返します。
キーの順に並べられた、 $h のキーから成り立つ配列リファレンスを返します。
キーの順に並べられた、 $h の値から成り立つ配列リファレンスを返します。
キーの順に並べられた、 $h のキーと値の組から成り立つ配列リファレンスを返します。
それぞれの組は、 keys
【訳注: key
の誤植と思われる】と value
の属性を持つオブジェクトです。
例えば:
: for $hash_ref.kv() -> $pair {
<: $pair.key :>=<: $pair.value :>
: }
$h と $v から成り立つ、新しいハッシュリファレンスを返します。
$v はハッシュリファレンスでなければなりません。
テンプレート文法によって形は異なりますが、つまり、Kolon文法では $~item
で、TTerse文法では loop
となりますが、 for
ループの中で、特別なループ変数を使うことができます。
以下の一覧では、ループ変数の名前として $~item
を用います。
Text::Xslate::Syntax::Kolon.ja#LoopsとText::Xslate::Syntax::TTerse.ja#Loops もあわせてご覧ください。
0 から始まる、ループ中の現在の繰り返し位置を示す添え字です。
1 から始まる、つまり $~item + 1
と等価な、ループ中の現在の繰り返し回数です。
引数の値を順番に選択します。
例えば:
: for $arrayref -> $item {
<: $~item.cycle('odd', 'even') :>
: }
これは odd even odd even ...
のように表示されます。
ループブロックが先頭であれば真で、そうでなければ偽です。
TTerse文法では、TT2との互換のために、 first
という別名があります。
ループブロックの末尾であれば真で、そうでなければ偽です。
TTerse文法では、TT2との互換のために、 last
という別名があります。
ループ中の配列の、次の要素です。 is_last
であれば nil
です。
つまり、 $~item.is_last ? nil : $~item.body[$~item+1]
と等価です。
ループ中の配列の、前の要素です。 is_first
であれば nil
です。
つまり、 $~item.is_first ? nil : $~item.body[$~item-1]
と等価です。
ループ中の配列の参照です。
ループ中の配列の大きさです。つまり、Perlの scalar(@{$arrayref})
です。
ループ中の配列で、最大の添え字です。つまり、Perlの $#{$arrayref}
です。
Xslateエンジンはフィルター構文のほかに、関数呼び出しもサポートしています。 フィルター構文として呼び出せる組み込み関数は、以下の通りです。
例えば、以下の二つの文は等価です:
<: $value | foo :>
<: foo($value) :>
defined
のような一部の組み込み関数は、本物の関数ではないので、フィルターとして使えないことに気を付けてください。
$str をraw文字列としてマークし、自動でHTMLエスケープされないようにします。
この関数の使用を控えることをお勧めします。その代わりに、プログラムの中で、 Text::Xslate::Util
からインポートできる mark_raw()
サブルーチンを使うべきです。
raw
は mark_raw
の別名です。
$str からrawマークを取り除きます。 もし $str がraw文字列でなければ、この関数は $str をそのまま返します。
$str 中のHTMLメタ文字をエスケープします。 もし $str がraw文字列であれば、この関数は $str をそのまま返します。
HTMLメタ文字とは、 /[<>"'&]/
のことです。
html
は html_escape
の別名です。
$str 中の、UTF-8でエンコードされた、安全でないURI文字をエスケープします。
安全でないURI文字とは、 /[^A-Za-z0-9\-\._~]/
のような、RFC 3986で定義された unreserved
文字クラスに含まれない文字のことです。
uri
は uri_escape
の別名です。
$value が配列リファレンスであれば真を返します。
$value がハッシュリファレンスであれば真を返します。
$value を Data::Dumper
を用いて検査します。
この関数はテストとデバッグのために提供されています。
$value が定義されていれば真を返します。
これは本物の関数ではなく単項演算子ですので、 defined $value
のように括弧を省くことができます。