Pretty-печать списка строк через запятую в муравей - PullRequest
4 голосов
/ 22 ноября 2011

У меня есть разделенная запятыми строка в свойстве муравья, например:

<property name="prop" value="a,b,c"/>

Я бы хотел напечатать или записать это так:

Line 1: a
Line 2: b
Line 3: c

Не похоже, что это должно быть слишком сложно, но я не могу понять, какие муравьиные компоненты я должен собрать вместе.

Ответы [ 2 ]

9 голосов
/ 22 ноября 2011

Это можно сделать с помощью loadresource , указав значение свойства в качестве ресурса string . Теперь вы можете использовать фильтр replaceregex для преобразования запятой в новую строку.

<project default="test">

  <property name="prop" value="a,b,c"/>

  <target name="test">
    <loadresource property="prop.fmt">
      <string value="${prop}"/>
      <filterchain>
        <tokenfilter>
          <replaceregex pattern="," replace="${line.separator}" flags="g"/>
        </tokenfilter>
      </filterchain>
    </loadresource>
    <echo message="${prop.fmt}"/>
  </target>

</project>

Вывод:

test:
     [echo] a
     [echo] b
     [echo] c
4 голосов
/ 22 ноября 2011

Образец с использованием Задачи Ant-Contrib

<taskdef resource="net/sf/antcontrib/antlib.xml"/>

<target name="test_split">
    <property name="prop" value="a,b,c"/>
    <for list="${prop}" param="letter">
        <sequential>
            <echo>@{letter}</echo>
        </sequential>
    </for>
</target>

Вывод:

aбс

Другое решение из здесь :

<scriptdef name="split" language="javascript">
    <attribute name="value"/>
    <attribute name="delimiter"/>
    <attribute name="prefix"/>
    <![CDATA[
         values = attributes.get("value").split(attributes.get("delimiter"));
         for(i=0; i<values.length; i++) {
             project.setNewProperty(attributes.get("prefix")+i, values[i]);
         }
     ]]>
</scriptdef>

<target name="test_split2">
    <property name="prop" value="a,b,c"/>
    <property name="prefix_str" value="Line_"/>
    <split value="${prop}" delimiter="," prefix="${prefix_str}"/>
    <echoproperties prefix="${prefix_str}"/>
</target>

Вывод:

Свойства муравьяВт ноя ноя 17:12:55 2011Line_0 = аLine_1 = ЬLine_2 = с

...