Thanks for the suggestions. I knew it was not the most efficient, however, we don't have many products.
On Feb 4, 3:39 pm, David Pollak <[email protected]> wrote: > On Thu, Feb 4, 2010 at 7:32 AM, Ross Mellgren <[email protected]> wrote: > > I think this new version will be slower than your original one, as each > > call to bind will visit the entire input XHTML. Why not use your original > > formulation but instead of TheBindParam, use FuncBindParam (which is the > > sugar-free version of body => ... that David describes)? > > Yeah... the bind operation is O(n log m) where 'n' is the number of element > nodes and m is the number of things to be bound. Using foldLeft, you're > making that O(n m) Then again, if the code is understandable for you, then > a couple of nanoseconds here and there are not overly important. > > > > > > > > > -Ross > > > On Feb 4, 2010, at 10:28 AM, Tim Maxwell wrote: > > > > Hi David, > > > > There really are a lot of paths available with scala/lift, aren't > > > there? > > > > After looking at what you wrote, here's what I came up with that works > > > well/is functional and compact, in case anyone else is wondering about > > > it. > > > > def links(html:NodeSeq): NodeSeq={ > > > > Product.findActive.foldLeft(html) { > > > (html, prod) => bind("links",html, > > > "force_"+prod.product ->{x:NodeSeq => {<a href={"/forced? > > > product="+prod.product}>{x}</a>}} > > > ) > > > } > > > } > > > > Product is a JPA entity class, findactive returns a list of products. > > > > If anyone has suggestions, please share. > > > > Cheers, > > > Tim > > > > On Feb 3, 5:08 pm, David Pollak <[email protected]> wrote: > > >> On Wed, Feb 3, 2010 at 12:44 PM, Tim Maxwell <[email protected]> > > wrote: > > >>> Hi folks, > > > >>> I am trying to do binds based on a list of products. The point is to > > >>> create links that can be wrapped around existing text or images. > > >>> Something like this: > > > >>> <signup:links.force_PROD>This is the link text our marketing dept. > > >>> creates</signup:link> > > > >>> Here's what I have so far in the snippet related to it: > > > >>> def links(html:NodeSeq): NodeSeq={ > > > >>> val productBinds:Seq[BindParam] = Product.findActive.flatMap{ > > >>> prod => List[BindParam] ( TheBindParam( "force_"+prod.product, > > >>> SHtml.link("/forced?product="+prod.product, ()=>() , _ ) ) ) > > >>> } > > >>> bind("links" , html, productBinds: _*) > > > >> It's so cool to see how people stuff in Lift... > > > >> Within your function, you can get the element that's being bound with: > > > >> BindHelpers.currentNode: Box[Elem] > > > >> On the other hand, if you're looking to get the children of the node > > >> currently being bound: > > > >> FuncBindParam("force_"+prod.product, body => <a > > >> href={"/forced?product="+Helpers.urlEncode(prod.product)}>{body}</a>) > > > >> Hope this helps. > > > >> Thanks, > > > >> David > > > >>> } > > > >>> Cheers, > > >>> Tim > > > >>> -- > > >>> 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]<liftweb%[email protected] > > >>> > > > <liftweb%[email protected]<liftweb%252bunsubscr...@googlegroup > > s.com>> > > >>> . > > >>> For more options, visit this group at > > >>>http://groups.google.com/group/liftweb?hl=en. > > > >> -- > > >> Lift, the simply functional web frameworkhttp://liftweb.net > > >> Beginning Scalahttp://www.apress.com/book/view/1430219890 > > >> Follow me:http://twitter.com/dpp > > >> Surf the harmonics > > > > -- > > > 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]<liftweb%[email protected] > > > > > . > > > For more options, visit this group at > >http://groups.google.com/group/liftweb?hl=en. > > > -- > > 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]<liftweb%[email protected] > > > > > . > > For more options, visit this group at > >http://groups.google.com/group/liftweb?hl=en. > > -- > Lift, the simply functional web frameworkhttp://liftweb.net > Beginning Scalahttp://www.apress.com/book/view/1430219890 > Follow me:http://twitter.com/dpp > Surf the harmonics -- 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.
