Как отменить анонимный список в шаблонах инструментов? - PullRequest
6 голосов
/ 15 января 2010

Можно ли отменить анонимный список в шаблонах инструментов?

, например

[% FOREACH month IN [1..12].reverse %]
    [% month %]
[% END %]

(кроме того, что не работает).

Просто поинтересовался, есть ли удобный способ сделать это без использования переменных или явной распечатки массива.

Ответы [ 3 ]

10 голосов
/ 15 января 2010

Извините, нет. Возможность создания экземпляров анонимных массивов in situ - это особый случай, обрабатываемый синтаксическим анализатором TT. Вы не можете работать с ними, как в обычном Perl, без промежуточного шага присвоения именованной переменной.

РЕДАКТИРОВАТЬ: Вы даже не можете передать подпрограмму, чтобы попытаться использовать так:

[% FOREACH month IN my_reverse([1..12]) %]
    [% month %]
[% END %]

Также нельзя пытаться использовать метод для объекта:

[% FOREACH month IN testObj.my_reverse([1..12]) %]
    [% month %]
[% END %]

Они будут компилироваться, но в каждом случае конструкция FOREACH видит начало цепочки, например, CODE ссылка в первом случае и благословенный объект во втором.

0 голосов
/ 03 мая 2017
<!-- show 2010 2009 2008 2007 -->
[% SET startyear = 2007 %]
[% SET endyear = 2010 %]
[% SET allyears = [ startyear .. endyear ] %]
[% FOREACH year IN alleyears.reverse %]
   <li>[% year %]</li>
[% END %]
0 голосов
/ 13 июля 2015

Я немного новичок, но как насчет этого:

[% month = ['jan', 'feb', 'mar', ...]; ## массив месяцев

[% FOREACH i = [(months.size-1) -1 .. 0]%] ## считает от -11 до 0 для 12 элементов [% months [(i -1)] ## преобразует i в положительное число - отображает месяцы [11], месяцы [10] ... месяцы [0]

...