Thanks Josh and Paul. Looking at these solutions I think I'll stick with the, [% tabidx = tabidx + 1 %] plus [% tabidx %] method I'm currently using. Looking forward to TT3 and unable to take the time to do your solutions.

Rod
--
Josh Rosenbaum wrote:
Roderick A. Anderson wrote:

Is there a method to increment a value and have it return that value? I've been through the Badger Book but didn't quite see what I was needing though MACRO seemed close. This is for a View for a Catalyst based application if that makes a difference.

I'm looking to accomplish something line this.

[% tabidx = 81 %]

<input name="DoIt"    tabindex="[% tabidx++ %]"
       type="submit" />
<input name="TryIt"   tabindex="[% tabidx++ %]"
       type="submit" />
<input name="IGiveUp" tabindex="[% tabidx++ %]"
       type="reset" />

It didn't work when I tried it. I have ended up doing this. ( It just seems WRONG :-)

[% tabidx = 81 %]

<input name="DoIt"    tabindex="[% tabidx %]"
       type="submit" />
[% tabidx = tabidx + 1 %]
<input name="TryIt"   tabindex="[% tabidx %]"
       type="submit" />
[% tabidx = tabidx + 1 %]
<input name="IGiveUp" tabindex="[% tabidx %]"
       type="reset" />



Rod,

I do not believe there is a way to do this, although you could do:
[% tabidx; tabidx = tabidx + 1 %]

Another idea might be to make tabidx a list ref, and then add a list virtual method.

[% tabidx = [81] %]
[% tabidx.inc() %] <-- will return 81 for display, and increment the value to 82

$Template::Stash::LIST_OPS->{ inc } = sub {
 my $list = shift;
 return $list->[0]++;
};

Might want to call that .pinc for "post increment" since you want it done after the fact. A .inc() should really return an already incremented value probably.

I would've suggested using a scalar here instead, but I don't think scalars are passed by ref, so I don't think your value would ever be updated.

-- Josh



_______________________________________________
templates mailing list
[email protected]
http://lists.template-toolkit.org/mailman/listinfo/templates

Reply via email to