Seems like the "flow" scope should be called "local" in C#/programming
terms, and local would be private/container-only scoping. Having "global" be
the default is a good call, but only in come case, as you have identified in
<if/>/<foreach/>/etc.

I'm sure we will be able to say more with a patch; so we can test things
out. If the changes are small enough, and defaults don't change existing
functionality, I'm happy to put them in the head since we are still a little
while from testing/beta'n this version.

I'd be inclined to separate the two patches, one for scoped properties
(which are core changes) and one for the new task def stuff.

----- Original Message ----- 
From: "Mitch Denny" <[EMAIL PROTECTED]>


> Hi folks,
>
> OK, I've got a bit of a prototype working for property scoping which so
> far appears to be non-breaking to existing scripts. It works like this:
>
> <property name="x" value="y" accessibility="Global" />
>
> Global is actually the default. If I had this:
>
> <property name="x" value="y" accessibility="Local" />
>
> It would mean that the property is accessible to all things in the
> current scope where a scope is defined by the current target (project
> for root level tasks) or TaskContainer. So this would cause an error in
> the expression evaluator:
>
> <if test="true">
> <property name="x" value="y" accessibility="Local" />
> </if>
>
> <echo message="${x}" />
>
> Because x is not accessible outside of the scope defined by the if task
> container. This works with my earlier taskdef work too! Interestingly
> the following won't work.
>
> <if test="true">
> <property name="x" value="y" accessibility="Local" />
> <if test="true">
> <echo message="${x}" />
> </if>
> </if>
>
> Because local is local to the current task container. I introduced a
> third accessibility level called Flow which allows this to work.
> Remember that the default is Global when you are using the <property />
> task, so it won't break anything. The way it works is that I have lots
> of PropertyDictionary objects attached to a hierarchy of Scope objects.
> The scope is updated when ever a build/target/task container starts or
> finishes.
>
> I also modified quite a bit of the implementation of PropertyDictionary
> so that it now stores a Property object as its value although the
> external interface is unaffected (cross fingers I didn't break
> anything).
>
> Now that I have done this, and if there is enough interest I'd like to
> propose that we do something like has been done for expression
> evaluation, take a branch and do some exploritory work on this where
> this = <taskdef /> and property scoping.
>
> Can I get a +1 or -1?



-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
nant-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-developers

Reply via email to