2010-01-15 6 views
6

Est-il possible d'inverser une liste anonyme dans une boîte à outils de modèle?comment inverser une liste anonyme dans le toolkit de modèle?

par exemple.

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

(sauf que cela ne fonctionne pas). Je me demandais simplement s'il était possible de le faire sans utiliser de variables ou sans taper explicitement sur le tableau.

+0

On dirait que quelqu'un doit écrire Template :: Plugin :: Autobox. – oeuftete

Répondre

10

Désolé, il n'y en a pas. Être capable d'instancier des tableaux anonymes in situ est un cas spécial géré par l'analyseur TT. Vous ne pouvez pas les utiliser comme vous le pouvez en Perl normal sans l'étape intermédiaire d'assignation à une variable nommée.

EDIT: Vous ne pouvez pas passer même dans un sous-programme pour essayer d'utiliser comme ceci:

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

Et vous ne pouvez essayer d'utiliser une méthode sur un objet:

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

Ils vont compiler, mais dans chaque cas, la construction FOREACH voit la tête de la chaîne, par exemple une référence CODE dans le premier cas et un objet béni dans le second.

+0

Merci Adam, c'est très utile à savoir. – aidan

0

Je suis un peu nouveau mais qu'en ceci:

[% mois = [ 'jan', 'févr', 'mar', ...]; ## réseau de mois

[% FOREACH i = [(months.size-1) -1 .. 0]%] ## chiffres -11 à 0 pour 12% des éléments [mois [(i - 1)] ## convertit i en nombre positif - affiche les mois [11], les mois [10] ... mois [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 %] 
Questions connexes