2010-01-15 11 views
6

¿Es posible revertir una lista anónima en el kit de herramientas de plantillas?cómo revertir una lista anónima en la plantilla de herramientas?

p. Ej.

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

(excepto que no funciona).

Solo me preguntaba si había una manera ordenada de hacerlo sin usar variables o escribir explícitamente la matriz.

+0

Parece que alguien necesita escribir una plantilla :: Plugin :: Autobox. – oeuftete

Respuesta

10

Lo sentimos, no lo es. Ser capaz de crear instancias anónimas in situ es un caso especial manejado por el analizador TT. No puede operarlos como lo hace en Perl normal sin el paso intermedio de asignar a una variable nombrada.

EDIT: Ni siquiera se puede pasar en una subrutina para tratar de utilizar este modo:

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

Tampoco se puede tratar de utilizar un método en un objeto:

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

Compilarán, pero en cada caso, el constructo FOREACH ve el jefe de la cadena, por ejemplo una referencia CODE en el primer caso y un objeto bendecido en el segundo.

+0

Gracias Adam, eso es muy útil para saber. – aidan

0

soy un poco nuevo, pero ¿qué pasa con esto:

[% mes = [ 'ene', 'feb', 'mar', ...]; ## serie de meses

[% FOREACH i = [(months.size-1) -1 .. 0]%] ## recuentos de -11 a 0 para 12 elementos [% mes [(i - 1)] ## convierte i a número positivo - muestra meses [11], meses [10] ... meses [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 %] 
Cuestiones relacionadas