On Wed, Jul 15, 2009 at 9:45 AM, Lev Epshteyn<le...@google.com> wrote: > Hmmm... Just after sending that, I realized that Cur can change during > execution, which may or may not be what we want. > > What's the expected output here: > > <div> > <osx:Variable key="foo" value="outer"/> > ${foo} > <os:Repeat expression="[1, 2]"> > ${foo} > <osx:Variable key="foo" value="inner${Context.Index}"/> > ${foo} > </os:Repeat> > ${foo} > </div> > > Looking at this, I would expect: > > outer > outer inner0 > outer inner1 > outer
Depends on how whether we've defined a new "Element" scope or not. > The My implementation would yield > > outer > outer inner0 > inner0 inner1 > inner1 Yes, which seems fine. This is a fringe case. Also, BTW: having osx:Variable "escape" a Repeat could actually be very useful: <div> <os:Repeat expression="..."> ... <osx:Variable key="last" value="${Cur}"/> </os:Repeat> The last value was ${last}. </div> You could even use this to compute sums: <os:Repeat expression="${listOfIntegers}"> <osx:Variable key="sum" value="${sum + Cur}"/> </os:Repeat> The total is ${sum}. > The Cur implementation will probably give us > > outer > [undefined] inner0 > [undefined] inner1 > outer Yeah, which is just bad. os:Repeat should not blow away osx:Variable. -- Adam > On Wed, Jul 15, 2009 at 12:33 PM, Lev Epshteyn <le...@google.com> wrote: >> >> >> On Wed, Jul 15, 2009 at 12:28 PM, Adam Winer <awi...@gmail.com> wrote: >>> >>> On Wed, Jul 15, 2009 at 8:52 AM, <le...@google.com> wrote: >>> > This implementation seems to define the variable for the entire >>> > invocation scope of a template (rather than scoped to the parent >>> > element >>> > of the <osx:Variable> tag as was initially proposed on the discussion >>> > thread. >>> >>> This implements Christopher Cole's spec suggestion of using My (see >>> goosemanjack's message from June 30) . I see the confusion: you >>> said "I like this idea", responding to Lane's message, but temporally >>> after Christopher's e-mail. So I thought you were +1'ing >>> Christopher's proposal, and when I said "I agree, this is good", I >>> meant Christopher's suggestion. >>> >>> > http://codereview.appspot.com/91118/diff/1/39 >>> > File >>> > >>> > java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/tags/VariableTagHandler.java >>> > (right): >>> > >>> > http://codereview.appspot.com/91118/diff/1/39#newcode48 >>> > Line 48: processor.getTemplateContext().getMy().put(key, value); >>> > I think putting the variable into Cur is more appropriate than My, >>> > since >>> > My is used to access XML attributes and Cur is used to access runtime >>> > data. >>> >>> It's too restrictive to think of "My" in that way. It's just "the >>> scope that is limited to a tag invocation". >> >> Fair enough, but still, changing the invocation params at runtime doesn't >> seem like the right approach. >> >> <osx:Variable key="foo" value="..."/> should allow the use of ${foo} with >> the new value, but not change ${My.foo} I don't think. >> >> Thus I believe changing the ${Cur} value is more appropriate here, as this >> is more dynamic (such as in loops) >> >>> >>> > >>> > http://codereview.appspot.com/91118 >>> > >> > >