How about this one then:

bind(nodeseq, "prefix",
    ("suffix", node) -> Text("this text replaced a prefix:suffix element")
);

On problem is it mucks up the Pair[String, () => NodeSeq] that bind expects,
not too pretty either.

One other solution I considered was an alternative overloaded version of
bind, something like:
bind(nodeseq, "prefix"){     Match("suffix") => Text("this text replaced a
prefix:suffix element"),
    node @ Match("suffix") => ... do something with the node, bindhelpers
not necessary
}

where Match is an extractor, possibly accepting XPath expressions


On Thu, Jun 18, 2009 at 12:29 AM, David Pollak <
[email protected]> wrote:

> Crud... adding xpathisms to bind... where will it end? :-)
>
>
>
>
> On Wed, Jun 17, 2009 at 3:41 PM, Kevin Wright <
> [email protected]> wrote:
>
>> One possibility I already considered is something like:
>> bind(nodeseq, "prefix",
>>     "suffix" -> Text("matched an element"),
>>     "@suffix" -> Text("matched an attribute"),
>>     "@suffix=value" -> Text("matched an attribute with specified value"));
>>
>> the bindings here would respectively match the elements:
>>
>> <prefix:suffix>content</prefix:suffix>
>> <span prefix:suffix="placeholder">content</span>
>> <span prefix:suffix="value">content</span>
>>
>> Use of the span elements above was an arbitrary choice
>>
>> What's missing is an intuitive way to access the node that has been bound,
>> especially if you only want to change the contents
>>
>>
>> On Wed, Jun 17, 2009 at 10:19 PM, David Pollak <
>> [email protected]> wrote:
>>
>>>
>>>
>>> On Wed, Jun 17, 2009 at 2:07 PM, Kris Nuttycombe <
>>> [email protected]> wrote:
>>>
>>>>
>>>> We'd still need some attribute to disambiguate in the case of multiple
>>>> textarea tags, wouldn't we?
>>>
>>>
>>> I don't think so. The only NodeSeq being passed to the function is the
>>> NodeSeq inside the tag that's getting bound to.
>>>
>>>
>>>>
>>>> Kris
>>>>
>>>> On Wed, Jun 17, 2009 at 2:51 PM, David
>>>> Pollak<[email protected]> wrote:
>>>> > I can see a set of methods that look like:
>>>> > textarea(f: String => Unit)(n: NodeSeq) that will slurp the values and
>>>> > attributes out of the NodeSeq... so you'd bind like:
>>>> > "biography" -> textarea(s => setBio(s)) _
>>>> >
>>>> > On Wed, Jun 17, 2009 at 10:22 AM, Matt Williams <[email protected]>
>>>> wrote:
>>>> >>
>>>> >> I wholeheartedly agree with the philosophy of separating the display
>>>> >> from the program logic, and am currently getting to grips with the
>>>> >> generators, but am finding that now I end up with a degree of markup
>>>> >> within my code.
>>>> >>
>>>> >> Can you think of any caveats to infering the node type passed, and
>>>> >> dynamically using the relevant generators to construct the returned
>>>> >> node.
>>>> >>
>>>> >> I am thinking something along the lines of:
>>>> >>
>>>> >> <person:biography>
>>>> >> <textarea style="myStyle" cols="20" rows="5">
>>>> >> This is a sample of some biography text
>>>> >> </textarea>
>>>> >> </person:biography>
>>>> >>
>>>> >> Where it would automatically infer that it is a textarea, pass
>>>> through
>>>> >> the relevant attributes, and insert whatever function, values, etc I
>>>> >> have specified in my snippet.
>>>> >>
>>>> >> What are your thoughts on this?
>>>> >>
>>>> >> Brgds,
>>>> >>
>>>> >> Matt
>>>> >>
>>>> >>
>>>> >>
>>>> >
>>>> >
>>>> >
>>>> > --
>>>> > Lift, the simply functional web framework http://liftweb.net
>>>> > Beginning Scala http://www.apress.com/book/view/1430219890
>>>> > Follow me: http://twitter.com/dpp
>>>> > Git some: http://github.com/dpp
>>>> >
>>>> > >
>>>> >
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Lift, the simply functional web framework http://liftweb.net
>>> Beginning Scala http://www.apress.com/book/view/1430219890
>>> Follow me: http://twitter.com/dpp
>>> Git some: http://github.com/dpp
>>>
>>>
>>>
>>
>>
>>
>
>
> --
> Lift, the simply functional web framework http://liftweb.net
> Beginning Scala http://www.apress.com/book/view/1430219890
> Follow me: http://twitter.com/dpp
> Git some: http://github.com/dpp
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to