NAME
Text::Xslate::Manual::Builtin - Builtin methods and filters/functions in Xslate
DESCRIPTION
This document describes builtin methods and filters/functions in Xslate.
Note that the xslate engine is not aware of context, so all the methods and filters/functions return a single value, even when the equivalent of Perl's returns a list of values.
METHODS
The xslate engine supports auto-boxing, so you can call methods for primitive (non-object) values. The following is builtin methods.
For nil
nil
has its specific namespace as nil
, although no builtin methods are provided.
For SCALARs
The namespace of SCALARs is scalar
, although no builtin methods are provided.
For ARRAY references
The namespace of ARRAY references is array
.
Returns true;
$a.size()
Returns the number of elements of $a.
$a.join($separator)
Joins the elements of $a into a single string separated by $separator.
$a.reverse()
Returns an ARRAY reference consisting of the elements of $a in the opposite order.
$a.sort(?$callback)
Sorts $a and returns a new ARRAY reference. The optional $callback is the same as Perl's.
Examples:
: my $a = [2, 1, 10];
: # alphabetic sort (default)
: $a.sort().join(" "); # 1 10, 2
: # explicitly alphabetic
: $a.sort(-> $a, $b { $a cmp $b }).join(" "); # 1, 10, 2
: # numeric sort
: $a.sort(-> $a, $b { $a <=> $b }).join(" "); # 1, 2, 10
See also "sort" in perlfunc.
$a.map($callback)
Evaluates $callback for each element of $a and returns a new ARRAY reference composed of the result of each such evaluation.
See also "map" in perlfunc
$a.reduce($callback)
Reduces $a by calling $callback multiple times. If $a is empty, this method returns nil
.
Examples:
: my $a = [10, 20, 30];
: # sum
: $a.reduce(-> $a, $b { $a + $b }); # 60
: # concat
: $a.reduce(-> $a, $b { $a ~ $b }); # 102030
: # min
: $a.reduce(-> $a, $b { $a min $b }); # 10
: # max
: $a.reduce(-> $a, $b { $a max $b }); # 30
See also "reduce" in List::Util.
For HASH references
The namespace of HASH references is hash
.
$h.size()
Returns the number of entries of $h.
$h.keys()
Returns an ARRAY reference consisting of the keys of $h, which are sorted by the keys.
$h.values()
Returns an ARRAY reference consisting of the values of $h, which are sorted by the keys.
$h.kv()
Returns an ARRAY reference consisting of the key-value pairs of $h, which are sorted by the keys. Each pair is an object that has the keys
and value
attributes.
For example:
: for $hash_ref.kv() -> $pair {
<: $pair.key :>=<: $pair.value :>
: }
LOOP VARIABLES
You can use special loop variables in for
loops, although its forms vary in template syntaxes, i.e. $~item
in Kolon and loop
in TTerse. In this list, the name of the loop variable is represented as $~item
.
See also "Loops" in Text::Xslate::Syntax::Kolon and "Loops" in Text::Xslate::Syntax::TTerse.
$~item / $~item.index
The current iterating index in the loop, which starts 0.
$~item.count
The current iterating count in the loop, which starts 1. i.e. the same as $~item + 1
.
$~item.cycle(...)
Selects a value in the arguments in cycle.
For example:
: for $arrayref -> $item {
<: $~item.cycle('odd', 'even') :>
: }
It will print odd even odd even ...
.
$~item.is_first
True if the loop block is the first, false otherwise.
This is aliased to first
in TTerse for compatibility with TT2.
$~item.is_last
True if the loop block is the last, false otherwise.
This is aliased to last
in TTerse for compatibility with TT2.
$~item.peek_next
The next item of the looping array. nil
if is_last
. i.e. the same as $~item.is_last ? nil : $~item.body[$~item+1]
.
$~item.peek_prev
The previous item of the looping array. nil
if is_first
. i.e. the same as $~item.is_first ? nil : $~item.body[$~item-1]
.
$~item.body
The reference of the looping array.
$~item.size
The size of the looping array. i.e. scalar(@{$arrayref})
in Perl.
$~item.max_index
The maximum index of the looping array. i.e. $#{$arrayref}
in Perl.
FILTERS/FUNCTIONS
The xslate engine supports filter syntax as well as function call. The following is the builtin functions, which can be invoked as filter syntax.
mark_raw($str)
Mark $str as a raw string to avoid auto HTML escaping.
raw
is an alias to mark_raw
.
unmark_raw($str)
Remove the raw mark from str. If str is not a raw string, this function returns str as is.
html($str)
Escapes html meta characters in str. If str is a raw string, this function returns str as is.
The html meta characters are /[<>"'&]/
.
uri($str)
Escapes unsafe URI characters in $str which gets encoded to UTF-8.
The unsafe URI characters are characters not included in the unreserved
character class defined by RFC 3986, i.e. /[^A-Za-z0-9\-\._~]/
.
See also RFC 3986.
is_array_ref(($value)
Returns true if $value is an ARRAY reference.
is_hash_ref(($value)
Returns true if $value is a HASH reference.
dump($value)
Inspects $value with Data::Dumper
.
This function is provided for testing and debugging.