Java Mailing List Archive

http://www.ant-tasks.com/

Apache Ant Archive

» Ant Users List
» Ant Developers List
For loop question

For loop question

2007-06-29       - By Scot P. Floess
Reply:     1     2     3     4     5     6  

Interesting question...  I actually had a need to iterate over a list
(using for loop construct) but needed the previous, current and next
elements in the list - certainly similar functionality.  Here is my
macro def:

   <macrodef
       name = "process-list"
       description = "Allows one to iterate over a list/files and for
each element in the list know the previous, current and next values."
       uri         = "http://jplate.sourceforge.net/utility">

       <attribute name = "list"      default = ""   description = "The
list to process."/>
       <attribute name = "delimiter" default = ","  description = "The
delimiter for @{list}."/>
       <attribute name = "previous"  default =
"jplate-utility.PREVIOUS"  description = "Name of property to hold
previous value in list."/>
       <attribute name = "current"   default =
"jplate-utility.CURRENT"   description = "Name of property to hold
current value in list."/>
       <attribute name = "next"      default =
"jplate-utility.NEXT"      description = "Name of property to hold next
value in list."/>

       <element name = "path"     optional = "true"  description =
"Files to process."/>
       <element name = "process"  description = "When iterating over
@{list}/@{path}, process the contents contained here."/>

       <sequential>
           <!--

               Initial settings...

           -->
           <ant-contrib:var  name = "@{previous}"  value = ""/>
           <ant-contrib:var  name = "@{current}"   value = ""/>
           <ant-contrib:var  name = "@{next}"      value = ""/>

           <!--

               Iterate over files and/or the list, calling process
               for each item.  First iteration we skip as we want
               to ensure we always have a previous, current and next.

           -->
           <ant-contrib:for  list = "@{list}"  delimiter =
"@{delimiter}"  param = "processlist">
               <ant-contrib:path>
                   <path/>
               </ant-contrib:path>

               <ant-contrib:sequential>
                   <ant-contrib:switch  value = "${@{current}}">
                       <ant-contrib:case  value = "">
                           <ant-contrib:var  name = "@{current}"  value
= "@{processlist}"/>
                       </ant-contrib:case>

                       <ant-contrib:default>
                           <ant-contrib:var  name = "@{next}"  value =
"@{processlist}"/>

                           <process/>

                           <ant-contrib:var  name = "@{previous}"  
value = "${@{current}}"/>
                           <ant-contrib:var  name = "@{current}"  
value = "@{processlist}"/>
                       </ant-contrib:default>
                   </ant-contrib:switch>
                 
               </ant-contrib:sequential>
           </ant-contrib:for>

           <!--

               Need to call process with an empty next - meaning end of
list.

           -->
           <ant-contrib:var  name = "@{next}"  value = ""/>

           <process/>
       </sequential>
  </macrodef>




broken connection wrote:
> Hi Friends,
> I have a simple "for" task question. I use this for task from
> ant-contrib:
>
>        <for list="${pass1.property},${pass2.property},${pass3.property}"
> param="argvalue">
>        <sequential>
>
>        <exec  executable="${ext}" >
>            <arg value="/c"/>
>            <arg value="execute.bat @{argvalue}"/>
>            <redirector outputproperty="result.property" />
>         </exec>
>
>        </sequential>
>        </for>
>
> I want to pass in 3 values and store the output in 3 different
> properties .
> Is there anyway to do this??
>
> Rite now, the output of all the 3 parameters gets overritten in "
> result.property"
>
> Your help would be greatly appreciated.
> Thanks
>

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

252-478-8087 (Home)
919-392-6730 (Work)

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


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@(protected)
For additional commands, e-mail: user-help@(protected)


©2008 ant-tasks.com - Jax Systems, LLC, U.S.A.