Disregard, I have just noticed that you do use a var at the end of the iteration to "unset" the property!
Peter
Peter Reilly wrote:
This will not work as each iteration of the for loop happens in the same project, so source and target will be set only once.
You will need to do something like (note the override attribute on the <propertyregex> and the use of <var> instead of <property>):
<var name="source" value=""/> <var name="target" value=""/>
<propertyregex property="source" override="yes" input="@{line}" regexp="^(.+)\s(.+)$" select="\1" />
... <if> <equals arg1="${source}" arg2=""/> <then> <var name="source" value="@{line}"/> <var name="target" value="@{line}"/> </then> </if>
(Yes it is even ugler!).
You could use a script: <ac:for param="line" list="${lines}"> <sequential> <script language="beanshell"> items = "@{line}".trim().split(" "); if (items.length > 0) { project.setProperty("source", items[0]); project.setProperty("target", items[items.length-1]); } </script> <echo>source is ${source}, target is ${target}</echo> </sequential> </ac:for>
Peter
Dick, Brian E. wrote:
...there has to be a better way to do this.
I have a file that contains lines like the following.
src1 trg1 src2 src3 trg3
I need to parse the file and send the two values in each line to another program. When there is only one value on the line, I have to send the value twice. Here's the target I wrote to parse the file. I looks pretty ugly. Can anyone simplify this?
<target name="test"> <loadfile property="list" srcFile="test_list.txt"> <filterchain> <tokenfilter delimoutput=","/> </filterchain> </loadfile>
<for list="${list}" param="line"> <sequential> <propertyregex property="source" input="@{line}" regexp="^(.+)\s(.+)$" select="\1" />
<propertyregex property="target" input="@{line}" regexp="^(.+)\s(.+)$" select="\2" />
<if> <not> <isset property="source"/> </not> <then> <property name="source" value="@{line}"/> <property name="target" value="@{line}"/> </then> </if>
<echo>Process Source=${source} Target=${target}</echo>
<var name="source" unset="true"/> <var name="target" unset="true"/> </sequential> </for> </target>
Thanks, BEDick
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
