Skip to content

Text::Xslate::Manual::Builtin.ja

gardejo edited this page Nov 15, 2011 · 1 revision

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用

組み込みメソッドは何も提供されていませんが、 nilnil という固有の名前空間を備えています。

スカラー値用

組み込みメソッドは何も提供されていませんが、スカラー値の名前空間は scalar です。

配列リファレンス用

配列リファレンスの名前空間は array です。

真を返します。【訳注:不要な行?】

$a.size()

$a の要素数を返します。

$a.join($separator)

$a の要素を結合して、 $separator で区切られた一つの文字列にして返します。

$a.reverse()

逆順にされた $a の要素から成り立つ配列リファレンスを返します。

$a.sort(?$callback)

$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.map($callback)

$a の要素それぞれについて $callback の式を評価し、そのそれぞれの評価結果から構成された新しい配列リファレンスを返します。

perlfunc/"map"もご覧ください。

$a.reduce($callback)

$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.merge($v)

$a および $v から成り立つ、新しい配列リファレンスを返します。

$v は配列リファレンスもしくはスカラー値です。

ハッシュリファレンス用

ハッシュリファレンスの名前空間は hash です。

$h.size()

$h のエントリー【訳注:キーと値の組】の数を返します。

$h.keys()

キーの順に並べられた、 $h のキーから成り立つ配列リファレンスを返します。

$h.values()

キーの順に並べられた、 $h の値から成り立つ配列リファレンスを返します。

$h.kv()

キーの順に並べられた、 $h のキーと値の組から成り立つ配列リファレンスを返します。 それぞれの組は、 keys 【訳注: key の誤植と思われる】と value の属性を持つオブジェクトです。

例えば:

: for $hash_ref.kv() -> $pair {
    <: $pair.key :>=<: $pair.value :>
: }

$h.merge($v)

$h$v から成り立つ、新しいハッシュリファレンスを返します。

$v はハッシュリファレンスでなければなりません。

ループ変数

テンプレート文法によって形は異なりますが、つまり、Kolon文法では $~item で、TTerse文法では loop となりますが、 for ループの中で、特別なループ変数を使うことができます。

以下の一覧では、ループ変数の名前として $~item を用います。

Text::Xslate::Syntax::Kolon.ja#LoopsText::Xslate::Syntax::TTerse.ja#Loops もあわせてご覧ください。

$~item / $~item.index

0 から始まる、ループ中の現在の繰り返し位置を示す添え字です。

$~item.count

1 から始まる、つまり $~item + 1 と等価な、ループ中の現在の繰り返し回数です。

$~item.cycle(...)

引数の値を順番に選択します。

例えば:

: for $arrayref -> $item {
    <: $~item.cycle('odd', 'even') :>
: }

これは odd even odd even ... のように表示されます。

$~item.is_first

ループブロックが先頭であれば真で、そうでなければ偽です。 TTerse文法では、TT2との互換のために、 first という別名があります。

$~item.is_last

ループブロックの末尾であれば真で、そうでなければ偽です。 TTerse文法では、TT2との互換のために、 last という別名があります。

$~item.peek_next

ループ中の配列の、次の要素です。 is_last であれば nil です。 つまり、 $~item.is_last ? nil : $~item.body[$~item+1] と等価です。

$~item.peek_prev

ループ中の配列の、前の要素です。 is_first であれば nil です。 つまり、 $~item.is_first ? nil : $~item.body[$~item-1] と等価です。

$~item.body

ループ中の配列の参照です。

$~item.size

ループ中の配列の大きさです。つまり、Perlの scalar(@{$arrayref}) です。

$~item.max_index

ループ中の配列で、最大の添え字です。つまり、Perlの $#{$arrayref} です。

フィルター/関数

Xslateエンジンはフィルター構文のほかに、関数呼び出しもサポートしています。 フィルター構文として呼び出せる組み込み関数は、以下の通りです。

例えば、以下の二つの文は等価です:

<: $value | foo :>
<: foo($value) :>

defined のような一部の組み込み関数は、本物の関数ではないので、フィルターとして使えないことに気を付けてください。

mark_raw($str)

$str をraw文字列としてマークし、自動でHTMLエスケープされないようにします。 この関数の使用を控えることをお勧めします。その代わりに、プログラムの中で、 Text::Xslate::Util からインポートできる mark_raw() サブルーチンを使うべきです。

rawmark_raw の別名です。

unmark_raw($str)

$str からrawマークを取り除きます。 もし $str がraw文字列でなければ、この関数は $str をそのまま返します。

html_escape($str)

$str 中のHTMLメタ文字をエスケープします。 もし $str がraw文字列であれば、この関数は $str をそのまま返します。

HTMLメタ文字とは、 /[<>"'&]/ のことです。

htmlhtml_escape の別名です。

uri_escape($str)

$str 中の、UTF-8でエンコードされた、安全でないURI文字をエスケープします。

安全でないURI文字とは、 /[^A-Za-z0-9\-\._~]/ のような、RFC 3986で定義された unreserved 文字クラスに含まれない文字のことです。

uriuri_escape の別名です。

is_array_ref(($value) 【訳注:開きパーレンが一つ多い】

$value が配列リファレンスであれば真を返します。

is_hash_ref(($value) 【訳注:開きパーレンが一つ多い】

$value がハッシュリファレンスであれば真を返します。

dump($value)

$valueData::Dumper を用いて検査します。

この関数はテストとデバッグのために提供されています。

defined($value)

$value が定義されていれば真を返します。 これは本物の関数ではなく単項演算子ですので、 defined $value のように括弧を省くことができます。

あわせて読みたい

Text::Xslate.ja

Text::Xslate::Manual.ja

Text::Xslate::Bridge::Star.ja