Hi All,
There has recently been brief mention/discussion of the need for a
'counter' variable in a loop.
Finding such a feature invaluable myself, i have included a patch which
makes a '__COUNTER__' variable available if loop_context_vars is turned
on (i had version 2.4 of HTML::Template).
Hope it makes it into the core... sam?
kind regards,
simran.
*** Template.pm.orig Thu Apr 18 09:25:07 2002
--- Template.pm Thu Apr 18 09:30:56 2002
***************
*** 617,629 ****
default) four loop context variables are made available inside a loop:
__FIRST__, __LAST__, __INNER__, __ODD__. They can be used with
<TMPL_IF>, <TMPL_UNLESS> and <TMPL_ELSE> to control how a loop is
! output. Example:
<TMPL_LOOP NAME="FOO">
<TMPL_IF NAME="__FIRST__">
This only outputs on the first pass.
</TMPL_IF>
<TMPL_IF NAME="__ODD__">
This outputs every other pass, on the odd passes.
</TMPL_IF>
--- 617,636 ----
default) four loop context variables are made available inside a loop:
__FIRST__, __LAST__, __INNER__, __ODD__. They can be used with
<TMPL_IF>, <TMPL_UNLESS> and <TMPL_ELSE> to control how a loop is
! output.
!
! In addition to the above, a __COUNTER__ VAR is also made available
! when loop context variables are turned on.
!
! Examples:
<TMPL_LOOP NAME="FOO">
<TMPL_IF NAME="__FIRST__">
This only outputs on the first pass.
</TMPL_IF>
+ <TMPL_VAR NAME="__COUNTER__">
+
<TMPL_IF NAME="__ODD__">
This outputs every other pass, on the odd passes.
</TMPL_IF>
***************
*** 1860,1869 ****
# die_on_bad_params set output() will might cause errors
# when it tries to set them.
if ($options->{loop_context_vars}) {
! $pmap{__first__} = HTML::Template::VAR->new();
! $pmap{__inner__} = HTML::Template::VAR->new();
! $pmap{__last__} = HTML::Template::VAR->new();
! $pmap{__odd__} = HTML::Template::VAR->new();
}
} elsif ($which eq '/TMPL_LOOP') {
--- 1867,1877 ----
# die_on_bad_params set output() will might cause errors
# when it tries to set them.
if ($options->{loop_context_vars}) {
! $pmap{__first__} = HTML::Template::VAR->new();
! $pmap{__inner__} = HTML::Template::VAR->new();
! $pmap{__last__} = HTML::Template::VAR->new();
! $pmap{__odd__} = HTML::Template::VAR->new();
! $pmap{__counter__} = HTML::Template::VAR->new();
}
} elsif ($which eq '/TMPL_LOOP') {
***************
*** 2731,2741 ****
@{$value_set}{qw(__first__ __inner__ __last__)} = (0,1,0);
}
$odd = $value_set->{__odd__} = not $odd;
}
$template->param($value_set);
$result .= $template->output;
$template->clear_params;
! @{$value_set}{qw(__first__ __last__ __inner__ __odd__)} =
(0,0,0,0)
if ($loop_context_vars);
$count++;
}
--- 2739,2750 ----
@{$value_set}{qw(__first__ __inner__ __last__)} = (0,1,0);
}
$odd = $value_set->{__odd__} = not $odd;
+ $value_set->{__counter__} = $count + 1;
}
$template->param($value_set);
$result .= $template->output;
$template->clear_params;
! @{$value_set}{qw(__first__ __last__ __inner__ __odd__
__counter__)} = (0,0,0,0,0)
if ($loop_context_vars);
$count++;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]