This question about Topic Markup Language and applications: Answered
How do I do for i=1, ... i++ without FOREACH?
Let's say I want to do something like this
%FOR{"i" start="2" stop="10" step="1" }%
* Set Topic_$i = ProjectPage2011p$i
%NEXT{"i"}%
How would I do that without FOREACH?
It's buried in
Faq39, but
VarFORMAT has a
type="string"
mode where you'd use the
$item
token (there's also a 1-based
$index
token).
However, you do have to generate the list of numbers to loop over manually..
%FORMAT{
"2,3,4,5,6,7,8,9,10"
type="string"
format=" * Set Topic_$item = ProjectPage2011p$item"
}%
Test:
NB: Set statements are the very first thing that are processed from the %BASETOPIC%
only - dynamically rendered Set statements do not participate in PreferenceSettings (for that, try SetVariablePlugin).
It would be nice if the list of numbers could be generated with a core macro (it seems like it's something CALC should do, but I can't see it), perhaps raise an enhancement task for this.
Although I'm generally pretty negative about
commonTagsHandler
macros provided by
ForEachPlugin and
SpreadSheetPlugin, this particular use-case is probably justification enough to keep using it in your own wiki - we did make some effort to ensure
ForEachPlugin would continue to work, late in the Foswiki 1.1 development cycle.
--
PaulHarvey - 18 Aug 2011