[Templates] Incrementing + outputting a counter value
Paul Seamons
mail at seamons.com
Tue Nov 6 14:47:04 GMT 2007
Andy,
It would be nice to get some clarification about the planned behavior of
pre/post increment/decrement and self-modifying operators (+= -= ...) in TT3.
I think that it makes the most sense for the pre/post increment/decrement
operators to always return their value - whether in parenthesis or not.
However, I think it makes the most sense for self-modifying operators to
behave like their expanded counterparts. If they are inside parenthesis then
they return their value. If they are not inside parenthesis then then behave
like SET operations and don't return anything -- for example a += 1 is
identical to a = a + 1 and (a += 1) is identical to (a = a + 1).
This is how I made Template::Alloy work and it would be nice to make sure the
behaviors are consistent. The following has worked in all versions of
Template::Alloy:
use Template::Alloy;
my $t = Template::Alloy->new;
$t->process(\<<'EOD') || die $t->error;
--------
++a | [% ++a %]
(++b) | [% (++b) %]
c += 1 | [% c += 1 %]
(d += 1) | [% (d += 1) %]
e = e + 1 | [% e = e + 1 %]
(f = f + 1) | [% (f = f + 1) %]
--------
EOD
The output for that chunk is:
--------
++a | 1
(++b) | 1
c += 1 |
(d += 1) | 1
e = e + 1 |
(f = f + 1) | 1
--------
More information about the templates
mailing list