For HASH references

$h.size()

$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 :>
: }

$h.merge($v)

Returns a new HASH reference consisting of $h and $v.

$v must be a HASH reference.

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.

$~item / $~item.index

$~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.

For example, the following two statements are the same:

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

Note that some builtin functions, such as defined, are not a real function which you cannot use as a filter.

mark_raw($str)

Mark $str as a raw string to avoid auto HTML escaping. You'd better avoid to use this function. Instead, you should use the mark_raw() subroutine in programs, which you can import from Text::Xslate::Util.

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_escape($str)

Escapes html meta characters in $str. If $str is a raw string, this function returns $str as is.

The html meta characters are /[<>"'&]/.

html is an alias to html_escape.

uri_escape($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\-\._~]/.

uri is an alias to uri_escape.

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.

defined($value)

Returns true if $value is defined. This is not a real function, but an unary operator, so you can omit the parens like defined $value.