Can it be just this? <macrodef..> <attribute../> <and>....</and> </macrodef>
- Alexey. On 10/4/06, Peter Reilly <[EMAIL PROTECTED]> wrote:
I have made a patch to do this: <macrodef name="is-empty-file"> <attribute name="file" /> <fragment> <and> <available file="@{file}" type="file" /> <length file="@{file}" length="0" /> </and> </fragment> </macrodef> http://issues.apache.org/bugzilla/show_bug.cgi?id=40678 Peter On 9/27/06, Peter Reilly <[EMAIL PROTECTED]> wrote: > > > On 9/26/06, Matt Benson <[EMAIL PROTECTED]> wrote: > > Peter: as you are the father of macrodef your opinion > > was one I was very interested in getting. I'm not > > sure I understood your example below. Could you > > clarify, and maybe elaborate on any ideas you have of > > what we might try to make macrodef more generic (I > > assume you mean so that it would just "work" > > regardless of its "body" contents. > > Yes, > I am not too sure about the mechanism, and there would > be naming issues (esp with regard to DynamicConfigurable and it;s ikk) > > One maybe be able to do something like (taking examples from ant's > build.xml) > > <macrodef name="trax.avail"> > <element> > <or> > <and> > <isset property=" > javax.xml.transform.TransformerFactory"/> > <available > classname="${javax.xml.transform.TransformerFactory}" > classpathref="classpath"/> > </and> > <available > resource="META-INF/services/javax.xml.transform.TransformerFactory"/> > </or> > </element> > </macrodef> > > <condition property="trax.impl.present "> > <trax.avail/> > </condition> > > - or - > <macrodef name="exec.includes"> > <elements> > <include name="**/ant"/> > <include name="**/antRun"/> > <include name="**/*.pl"/> > <include name="**/*.py"/> > <include name="**/*.py"/> > </elements> > </macrodef> > > <chmod perm="ugo+x" type="file" failonerror="${chmod.fail}"> > <fileset dir="${dist.bin}"> > <exec-includes/> > </fileset> > </chmod> > > These are a bit lame, your example is better! > > <macrodef name="isEmptyFile"> > <attribute name="file" /> > <elements> > <and> > <available file="@{file}" type="file" /> > <length file="@{file}" length="0" /> > </and> > </elements> > </macrodef> > > The point is that this <macrodef> does not know about > the type (if any) of the tags in the <elements>, it a macro > more like c macros. > > Peter > > > > Worth mentioning > > is the fact that macrodef's nested "sequential" > > appears to be a convention only; an actual Sequential > > object is not used; I'm thinking this is a good thing. > > > > Thanks, > > Matt > > > > --- Peter Reilly <[EMAIL PROTECTED] > wrote: > > > > > +1, > > > It would however be nicer to make macrodef > > > more generic. To inject the UEs into the macro > > > instance. > > > > > > Like: > > > <macrodef name="engine"> > > > <attribute name="impl"> > > > <dom> > > > <service > > > type="javax.script.ScriptEngineFactory" > > > provider="@{impl}"/> > > > </dom> > > > </macrodef> > > > > > > <jar jarfile="x.jar"> > > > <fileset dir="classes"/> > > > <engine impl="org.me.SimpleLang"/> > > > </jar> > > > > > > Do not know if it is possible. > > > Peter > > > > > > On 9/26/06, Alexey Solofnenko <[EMAIL PROTECTED]> > > > wrote: > > > > > > > > +1 Good idea, Matt. > > > > > > > > - Alexey. > > > > > > > > On 9/26/06, Matt Benson <[EMAIL PROTECTED]> > > > wrote: > > > > > > > > > > It strikes me that we don't have a utility to > > > > > declaratively build custom conditions from > > > others; > > > > > macrodef would seem the obvious choice for, > > > e.g.: > > > > > > > > > > <macrodef name="isEmptyFile"> > > > > > <attribute name="file" /> > > > > > <sequential> > > > > > <and> > > > > > <available file="@{file}" type="file" /> > > > > > <length file="@{file}" length="0" /> > > > > > </and> > > > > > </sequential> > > > > > </macrodef> > > > > > > > > > > But the result amounts to a Task: executable, > > > but > > > > > unavailable for use where conditions would be > > > > > available. > > > > > > > > > > Would it make sense to allow this by allowing a > > > nested > > > > > <condition> as an alternative to <sequential>? > > > Then > > > > > cloning the MacroInstance class to > > > MacroCondition > > > > > implements Condition, for use when <condition> > > > is > > > > > specified? Cloning the entire > > > MacroDef/MacroInstance > > > > > family to have an entirely new task feels a > > > little > > > > > extreme to me here... > > > > > > > > > > Alternative suggestions? > > > > > > > > > > TIA, > > > > > Matt > > > > > > > > > > > > > __________________________________________________ > > > > > Do You Yahoo!? > > > > > Tired of spam? Yahoo! Mail has the best spam > > > protection around > > > > > http://mail.yahoo.com > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > To unsubscribe, e-mail: > > > [EMAIL PROTECTED] > > > > > For additional commands, e-mail: > > > [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > -- > > > > Alexey N. Solofnenko trelony at gmail.com > > > > home: http://trelony.cjb.net/ > > > > Pleasant Hill, CA (GMT-8 hours usually) > > > > > > > > > > > > > > > > > __________________________________________________ > > Do You Yahoo!? > > Tired of spam? Yahoo! Mail has the best spam protection around > > http://mail.yahoo.com > > > > > --------------------------------------------------------------------- > > 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]
-- Alexey N. Solofnenko trelony at gmail.com home: http://trelony.cjb.net/ Pleasant Hill, CA (GMT-8 hours usually)