ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 40678] New: - [Patch] Allow macrodef to have arbitary xml elements
Date Wed, 04 Oct 2006 15:55:49 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=40678>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=40678

           Summary: [Patch] Allow macrodef to have arbitary xml elements
           Product: Ant
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: Core
        AssignedTo: dev@ant.apache.org
        ReportedBy: peterreilly@apache.org


Currently <macrodef> only allows the creation of new tasks.
This makes it difficult to for example compose conditions
from other conditions - see 
http://marc.theaimsgroup.com/?t=115928538600003&r=1&w=2
for a dicussion.

This patch allows this.
Overview of changes:
<macrodef> to have a new element <fragment>, this can contain
arbitary xml and associate it with a name. The name *has* to
have a '-' in it (this means that the fragment will not be
confused with refection based elements).
If a fragment is used, macrodef will create a MacroFragmentTask
instead of a MacroInstance. This MacroFragmentTask extends MacroInstance
and implements MacroFragment.
MacroInstance has been modified a little so it can be extended.
UnknownElement has been modifed to check if child unknown elements
are MacroInstances and if so expand them by calling MacroFragment.getUnknowns()

Usage:
   <macrodef name="file-sets">
      <fragment>
        <fileset dir="build/a"/>
        <fileset dir="build/b"/>
      </fragment>
    </macrodef>

    <copy todir="build/c">
      <file-sets/>
    </copy>


and:
    <macrodef name="is-empty-file">
      <attribute name="file" />
      <fragment>
        <and>
          <available file="@{file}" type="file" />
          <length file="@{file}" length="0" />
        </and>
      </fragment>
    </macrodef>

    <condition property="build.is.empty">
      <is-empty-file file="build.xml"/>
    </condition>

    <echo>${build.is.empty}</echo>
    <touch file="empty.file"/>

    <condition property="empty.is.empty">
      <is-empty-file file="empty.file"/>
    </condition>

    <echo>${empty.is.empty}</echo>

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

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


Mime
View raw message