2010-01-15 12 views
6

Czy można odwrócić listę anonimową w pakiecie narzędzi szablonów?Jak odwrócić anonimową listę w zestawie narzędzi szablonów?

np.

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

(z wyjątkiem tego, że nie działa).

Zastanawiasz się, czy był to dobry sposób na zrobienie tego bez użycia zmiennych lub jawnego wpisania tablicy.

+0

Wygląda na to, że ktoś potrzebuje szablonu do pisania :: Plugin :: Autobox. – oeuftete

Odpowiedz

10

Niestety, nie ma. Możliwość tworzenia anonimowych macierzy na miejscu jest specjalnym przypadkiem obsługiwanym przez parser TT. Nie można operować na nich tak, jak w zwykłym Perlu bez pośredniego kroku przypisywania do nazwanej zmiennej.

EDIT: Nie można nawet przejść w podprogramie próbować używać tak:

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

Nie można spróbować użyć metody na obiekcie:

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

Będą kompilować, ale w każdym przypadku konstrukt FOREACH widzi głowę łańcucha, np. odniesienie CODE w pierwszym przypadku i obiekt błogosławiony w drugim.

+0

Dzięki Adam, bardzo dobrze jest wiedzieć. – aidan

0

jestem trochę nowy, ale co z tego:

[% miesiąc = [ 'Jan', 'luty', 'mar', ...]; ## Tablica miesięcy

[% ForEach i = [(months.size-1) -1 .. 0]%] ## liczy -11 do 0 ° C na 12 elementów [% miesięcy [(i - 1)] ## konwertuje ja na liczbę dodatnią - wyświetla miesiące [11], miesiące [10] ... miesiące [0]

0
<!-- show 2010 2009 2008 2007 --> 
[% SET startyear = 2007 %] 
[% SET endyear = 2010 %] 
[% SET allyears = [ startyear .. endyear ] %] 
[% FOREACH year IN alleyears.reverse %] 
    <li>[% year %]</li> 
[% END %]