Перейти к основному содержимому

Что такое PROScript

PROScript — язык шаблонизатора. Для указания команд языка используются тэги [% ... %].

Доступ к переменным

Доступ к скалярным переменным:

[% var %]
[% $var %]

Доступ к полям:

[% var.0 %]
[% var.field %]
[% var.$field %]

Значения переменных могут быть хэшем, ссылками на массивы или объектами.

Если $var - экземпляр объекта, можно вызывать методы:

[% $var.method() %]
[% $var.method(1, 2, 3) %]
[% $var.method(foo => [1, 2, 3]) %]
[% $var.method({ foo => 'bar' }) %]

Выражения

Циклы

[% FOREACH item IN arrayref %]
[% item %]
[% END %]
 [% FOREACH item IN arrayref %]
[%- IF loop.is_first -%]
<first>
[%- END -%]
* [% loop.index %] # 0 origin
* [% loop.count #loop.index + 1 %]
* [% loop.body # alias toarrayref %]
* [% loop.size #loop.body.size %]
* [% loop.max_index # loop.size- 1 %]
* [% loop.peek_next #loop.body[ loop.index + 1 ]
* [% loop.peek_prev #loop.body[ loop.index - 1 ]
[%- IF loop.is_last -%]
<last>
[%- END -%]
[% END %]

FOREACH не принимает объекты, поэтому их следует преобразовать в массив (объект класса Array) при помощи методов keys(), values() или kv(). Также поддерживаются директивы для управления циклом NEXT и LAST.

Условные выражения

[% IF logical_expression %]
Case 1
[% ELSIF logical_expression %]
Case 2
[% ELSE %]
Case 3
[% END %]
[% UNLESS logical_expression %]
Case 1
[% ELSE %]
Case 2
[% END %]
[% SWITCH expression %]
[% CASE case1 %]
Case 1
[% CASE case2 %]
Case 2
[% CASE DEFAULT %]
Case 3
[% END %]

Условные выражения в PROScript

Функции и фильтры

    [% var | f %]
[% f(var) %]

Виртуальные методы

[% a.size() %]
[% a.join(", ") %]
[% a.reverse() %]
[% h.size() %]
[% h.keys() %]
[% h.values() %]
[% h.kv() %]