ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scot P. Floess" <sflo...@nc.rr.com>
Subject Re: Please Help Me Finish This For Loop Code
Date Fri, 02 Dec 2011 16:34:46 GMT

Oops, you said Ant contrib is fine ;)

Let me give this some thought - I may be able to help.  I thought I had 
some code I wrote to do a "for" - I did and it used recursion...and just 
like you mention, craps out around 300 iterations...  At one time I had 
figured out how to do this...but have no idea where I put the code or if I 
even implemented it....


  On Thu, 1 Dec 2011, Steve Amerige wrote:

> Hi all,
>
> I'm looking to implement a for loop in Ant (antcontrib, javascript/groovy 
> scripts are okay).
>
> <target name="test-forloop">
> <forloop start="1" end="1000">
> <echo message="i = ${i}"/>
> </forloop>
> </target>
>
> <macrodef name="forloop">
> <attribute name="i"      default=""/>
> <attribute name="start"  default=""/>
> <attribute name="end"    default=""/>
> <attribute name="setup"  default="true"/>
> <element name="forbody"  implicit="true"/>
> <sequential>
> <if>
> <istrue value="@{setup}"/>
> <then>
> <script language="javascript">
> <![CDATA[
>               var start=@{start};
>               var end=@{end};
>               for (i = start; i <= end; i++) {
>                  macrotask = project.createTask("forloop");
>                  macrotask.setDynamicAttribute("i", i);
>                  macrotask.setDynamicAttribute("setup", "false");
>                  macrotask.perform();
>               }
>            ]]>
> </script>
> </then>
> <else>
> <echo message="forbody iteration # @{i}:"/>
> <!-- <forbody/> -->
> </else>
> </if>
> </sequential>
> </macrodef>
>
> I'm looking to implement a for loop in Ant that acts on an element.  Ant 1.7, 
> Antcontrib, javascript/groovy scripts are okay.
>
> The above code works, but it doesn't call the <forbody/>.  I'm using 
> JavaScript to implement the for loop, but I don't know how to add to the 
> macrotask the passed-in element so that it gets called on each loop.  I've 
> read pages on createDynamicElement (deprecated) and addTask in MacroInstance:
>
>    http://javasourcecode.org/html/open-source/ant/ant-1.7.0/org/apache/tools/ant/taskdefs/MacroInstance.html
>
> But no examples are given to help me finish the above example.  Note that I 
> did succeed in getting a version to work using recursion.  Unfortunately, it 
> would only recurse 300 deep before aborting.  The above code doesn't have any 
> problem with recursion.
>
> Can anyone help finish this code example so that <forbody/> can be called?
>
> Thanks,
> Steve Amerige
> SAS Institute, Deployment Software Development
>

Scot P. Floess             RHCT  (Certificate Number 605010084735240)
Chief Architect FlossWare  http://sourceforge.net/projects/flossware
                            http://flossware.sourceforge.net
                            https://github.com/organizations/FlossWare

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


Mime
View raw message