ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scot P. Floess" <flo...@mindspring.com>
Subject Re: Implementing a loop in ANT
Date Fri, 09 Jun 2006 18:10:56 GMT
Well this works...for under 500 iterations.  I get a StackOverflow 
exception so...this is certainly not an "ideal" solution ;)

Scot P. Floess wrote:
> Phew, I finally got a preliminary version working - took some time...
>
>   <macrodef  name = "jp-for">
>       <attribute  name = "param"  description = "The name of the param 
> containing the current value of the loop"/>
>       <attribute  name = "lower"  default = "1"  description = "The 
> lower bounds of the loop"/>
>       <attribute  name = "upper"  description = "The upper bounds of 
> the loop"/>
>       <attribute  name = "step"   default = "1"  description = "The 
> upper bounds of the loop"/>
>
>       <element  name = "loop"  implicit = "true" description = "The 
> enclosing block - just like ant contrib's for/sequential"/>
>
>       <sequential>
>           <var  name = "@{param}"  value = "@{lower}"/>
>
>           <if>
>               <not>
>                   <equals  arg1 = "${@{param}}"  arg2 = "@{upper}"/>
>               </not>
>
>               <then>
>                   <loop/>
>
>                   <math  result = "@{param}"  datatype = "int"  
> operation = "+"  operand1 = "${@{param}}"  operand2 = "@{step}"/>
>
>                   <jp-for  param = "@{param}"  lower = "${@{param}}"  
> upper = "@{upper}"  step = "@{step}">
>                       <loop/>
>                   </jp-for>
>               </then>
>           </if>
>       </sequential>
> </macrodef>
>
> It actually worked :)
>
> Keep in mind...this is a preliminary version - not tried with a huge 
> list - nor is it making sure upper/lower are actually the 
> bigger/smaller number (nor whether they are integer values)...
>
> But it mostly works :)
>
> Anderson, Rob (Global Trade) wrote:
>> I had a similar need. I bassically created a shell script that would
>> generate a LIST property that contained a comma delimited list of
>> numbers. Here is the script...
>>
>>
>> #!/bin/bash
>> echo "How many POs?"
>> read NUM
>>
>> X=0
>>
>> echo -n "LIST=" >list.txt
>>
>> while  [ $X -lt $NUM ] ; do
>>   if [ $X -lt 10 ] ; then
>>     echo -n "$DELIM"00"$X" >> list.txt
>>   elif [ $X -ge 10 ] & [ $X -lt 100 ] ; then
>>     echo -n "$DELIM"0"$X" >> list.txt
>>   else
>>     echo -n "$DELIM""$X" >> list.txt
>>   fi
>>   DELIM=,
>>   let X=$X+1
>> Done
>>
>> Run this first to generate the LIST in list.txt, then use the foreach
>> task to loop over the LIST property in your build.xml. I know it's kinda
>> lame, but it works.
>>
>> -Rob A
>>
>>
>>  
>>> -----Original Message-----
>>> From: Scot P. Floess [mailto:floess@mindspring.com] Sent: Friday, 
>>> June 09, 2006 3:50 AM
>>> To: Ant Users List
>>> Subject: Re: Implementing a loop in ANT
>>>
>>> They do, but unfortunately not exactly what Guru needs.  They 
>>> support for-loops over lists or file sets.  Really, he needs 
>>> something like:
>>>
>>> <for lower = "1" upper = "100">
>>> ...
>>> </for>
>>>
>>> I'm trying to figure out a way to do this using ant/ant-contrib but 
>>> its not readily apparent to me (I though it'd be trivial) to make it 
>>> happen.
>>>
>>> What I really need is some form of while loop.  I considered using 
>>> recursion...but I could see some possible issues with arbitrarily 
>>> large iterations (not sure why one would do so...but nonetheless).
>>>
>>> Anyway, really I don't think he wants to pre-compute some large list 
>>> with a delimiter and then use <for> over the list...  At least I 
>>> don't want to do that as a solution ;)  Yes, I know one could 
>>> possibly use a <script>.  I am trying to not do that anyway (for 
>>> reasons related to my open source project - long story)...
>>>
>>> Scot
>>>
>>> dbrosius@baybroadband.net wrote:
>>>    
>>>> ant-contrib.sourceforge.net has some tasks to do this.
>>>>
>>>>
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: "Guru Balse" <guru.balse@oracle.com>
>>>> Sent: Wed, June 7, 2006 2:17 pm
>>>> To: "Ant Users List" <user@ant.apache.org>
>>>> Subject: Implementing a loop in ANT
>>>>
>>>> I am sure this question has been asked before, and I could       
>>> not see any    
>>>> reasonable answer in the archives.  How can I implement a       
>>> loop in ANT    
>>>> without using scripts?  For example, if I want to call a certain 
>>>> target N times, how can I do it?
>>>>
>>>> Using ant-contrib is OK.  Of course, something like <for 
>>>> list="1,2,3,4,5,6,...,N"> would work but I want N to be a property 
>>>> that can be specified in the command line.
>>>>
>>>> Thanks in advance for your suggestions.
>>>>
>>>>  - Guru Balse
>>>>
>>>>
>>>>       
>>> ---------------------------------------------------------------------
>>>    
>>>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org For       
>>> additional    
>>>> commands, e-mail: user-help@ant.apache.org
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>       
>>> ---------------------------------------------------------------------
>>>    
>>>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org For       
>>> additional    
>>>> commands, e-mail: user-help@ant.apache.org
>>>>
>>>>
>>>>         
>>> -- 
>>> Scot P. Floess
>>> 27 Lake Royale
>>> Louisburg, NC  27549
>>>
>>> 252-478-8087 (Home)
>>> 919-754-4592 (Work)
>>>
>>> Chief Architect JPlate  http://sourceforge.net/projects/jplate
>>> Chief Architect JavaPIM http://sourceforge.net/projects/javapim
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org For 
>>> additional commands, e-mail: user-help@ant.apache.org
>>>
>>>
>>>
>>>     
>>
>>
>>   
>

-- 
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-754-4592 (Work)

Chief Architect JPlate  http://sourceforge.net/projects/jplate
Chief Architect JavaPIM http://sourceforge.net/projects/javapim


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message