Как создать разделенный запятыми список в Ant? - PullRequest
0 голосов
/ 14 июля 2011

Как я могу создать разделенный запятыми список из цикла for в Ant?

Я могу перебрать свойство источника с помощью ant-contrib for, но я не уверен, как вывести его в свойство назначения:

<ac:for list="${comma_seperated}" param="entry">
    <sequential>
         <if>
         <isset property="@{entry}_enabled" />
             <then>
             <!-- append to property enabled_list here -->
             </then>
         </if>
    </sequential>
</ac:for>

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Некоторые фрагменты, использующие Ant Addon Flaka для итерации по свойству csv и добавления материала для каждой итерации:

<project xmlns:fl="antlib:it.haefelinger.flaka">

 <property name="foobar" value="Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda"/>
 <property name="foobaz" value="My,Ny,Xi,Omikron,Pi,Rho,Sigma,Tau,Ypsilon,Phi,Chi,Psi,Omega"/>

 <fl:for var="item" in="split('${foobaz}', ',')">
  <fl:let>foobar ::= concat('${foobar}',',#{item}')</fl:let>
 </fl:for>

<echo>$${foobar} => ${foobar}</echo>

</project>

output:

[echo] ${foobaz} => Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,My,Ny,Xi,Omikron,Pi,Rho,Sigma,Tau,Ypsilon,Phi,Chi,Psi,Omega

РЕДАКТИРОВАТЬ
рад, что вы поняли идею, хотя мой фрагмент был несколько глуп, поскольку можно было бы достичь некоторого результата просто с помощью

<property name=someproperty value=${foobar},${foobaz}>

не знаю деталей ваших требований, но вот адаптированный фрагмент, добавляющий суффикс / length к любому элементу
вашего свойства csv:

<project xmlns:fl="antlib:it.haefelinger.flaka">
 <property name="foobar" value="Alpha,Beta,Gamma,Delta"/>
 <property name="foobaz" value=""/>

 <fl:for var="item" in="split('${foobar}', ',')">
  <fl:choose>
   <!-- avoid a leading ',' -->
   <fl:when test="'${foobaz}'.length eq 0">
    <fl:let>foobaz ::= concat('${foobaz}','#{item}/length#{item.length}')</fl:let>
   </fl:when>
   <fl:otherwise>
    <fl:let>foobaz ::= concat('${foobaz}',',#{item}/length#{item.length}')</fl:let>
   </fl:otherwise>
  </fl:choose>
 </fl:for>
 <!-- optionally overwrite ${foobar} with ${foobaz} --> 
 <fl:let>foobar ::= '${foobaz}'</fl:let>

 <echo>$${foobar} => ${foobar}</echo>
</project> 

output:

[echo] ${foobar} => Alpha/length5,Beta/length4,Gamma/length5,Delta/length5
0 голосов
/ 14 июля 2011

Попробуйте использовать стандартную задачу Ant <pathconvert>. Смотри http://ant.apache.org/manual/Tasks/pathconvert.html.

...