I'm just starting out on Enlive - any examples added would be welcome.
I'll also accumulate some documentation as I go through the learning
curve.

Thanks, Adrian.

On Wed, Apr 15, 2009 at 5:05 AM, David Nolen <dnolen.li...@gmail.com> wrote:
> One early thought, would you like me to extend the number of examples? I'm
> really getting into the nitty gritty of what's possible with Enlive and it
> would be nice to have a relatively informative list of possibilities
> distributed with the library vs. the single example that's in there right
> now ;)
> On Tue, Apr 14, 2009 at 1:31 PM, Christophe Grand <christo...@cgrand.net>
> wrote:
>>
>> I pushed do->, attr=, attr? and snippets values as source to github
>> http://github.com/cgrand/enlive/commits/right
>>
>> Christophe Grand a écrit :
>> > Hello David,
>> >
>> > David Nolen a écrit :
>> >
>> >> Considering the above, I'm left wondering if it's possible to further
>> >> eliminate these redundancies and make templates more reusable. I'm not
>> >> sure if this is what you had in mind for Enlive, but allowing
>> >> templates to be created without references to files would make it
>> >> possible to build very, very composable interfaces.
>> >> Of course it's quite possible that you can already do this with Enlive
>> >> and I'm just unclear about how to accomplish it.
>> >>
>> >
>> > I'm sorry for the lack of documentation.
>> >
>> > The "source" of a template/snippet can either be:
>> > - a string (a resource path resolved by the classloader)
>> > - a File, URI or URL,
>> > - a map (a "literal" xml/html tree).
>> >
>> > A template is a function that returns a seq of strings. (It's the end of
>> > the "pipeline".)
>> >
>> > A snippet is a function that now (in the "new" enlive) returns a seq of
>> > nodes. (I suppose I should add "seq of nodes" as a valid source type.)
>> > Snippets are valid values on the right-hand side of rules. The only
>> > difference between templates and snippets is that templates serialize
>> > their return value.
>> >
>> >
>> >> This is great.  I had thought that supporting some kind of partial
>> >> template thing would be interesting, but that's actually just my poor
>> >> logic at work ;)
>> >>
>> >> It seems like with the new version of Enlive I could do something like
>> >> this:
>> >>
>> >> (deftemplate pageA-template path
>> >>   []
>> >>   [[:div (attr? :tiptree:replace)]] (fn [xml-node]
>> >>
>> >> (find-the-widget-html-file-that-corresponds-to-a-certain-attr-and-return-as-result)))
>> >>
>> >> (deftemplate pageB-template path
>> >>   []
>> >>   [[:div (attr? :tiptree:replace)]] (fn [xml-node]
>> >>
>> >> (find-the-widget-html-file-that-corresponds-to-a-certain-attr-and-return-as-result)))
>> >>
>> >> (def pageAPartial (pageA-template))
>> >> (def pageBPartial (pageB-template))
>> >>
>> >> ;; the following would work only if templates allowed passing html as
>> >> strings and not just as files
>> >>
>> >> (deftemplate widgetsPageA pageAPartial
>> >>   [map]
>> >>   [[:div (attr? :tiptree:widget)]] (fn [xml]
>> >> (use-xml-attr-and-map-to-apply-and-return-a-snippet))
>> >>
>> >> (deftemplate widgetsPageB pageBPartial
>> >>   [map]
>> >>   [[:div (attr? :tiptree:widget)]] (fn [xml]
>> >> (use-xml-attr-and-map-to-apply-and-return-a-snippet))
>> >>
>> >> (def pageA (widgetsPageA someMap))
>> >> (def pageB (widgetsPageA someMap))
>> >>
>> >>
>> >
>> > I suppose you really want to break the computation in two and not write:
>> > (deftemplate pageA-template path
>> >   [map]
>> >   [[:div (attr? :tiptree:replace)]] (fn [xml-node]
>> >
>> > (find-the-widget-html-file-that-corresponds-to-a-certain-attr-and-return-as-result))
>> >   [[:div (attr? :tiptree:widget)]] (fn [xml]
>> > (use-xml-attr-and-map-to-apply-and-return-a-snippet)))
>> >
>> > or:
>> > (deftemplate pageA-template path
>> >   [map]
>> >   [[:div (attr? :tiptree:replace)]]
>> >     (do->
>> >       (fn [xml-node]
>> >
>> > (find-the-widget-html-file-that-corresponds-to-a-certain-attr-and-return-as-result))
>> >       (fn [xml] (use-xml-attr-and-map-to-apply-and-return-a-snippet))))
>> >
>> > (well, it would work if do-> has been ported to the new enlive)
>> >
>> > Keeping in mind the difference between a snippet and a template, you
>> > will be able to do what you describe with the new enlive once I
>> > implement 'attr? and add support for seq of nodes as a valid source
>> > type.
>> >
>> >
>> > hth,
>> >
>> > Christophe
>> >
>> > >
>> >
>> >
>>
>>
>> --
>> Professional: http://cgrand.net/ (fr)
>> On Clojure: http://clj-me.blogspot.com/ (en)
>>
>>
>>
>>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to