Hi Jeff,
Don't forget that Velocity and Freemarker are also good candidates for server side templating and with clojure's java integration a snap to use, e.g. ... (defn genSyntaxHiLight [] (let [fmc (freeMarkerConfig) tmpl (. fmc getTemplate "clojure.ftl") map (clj-ns/get-tree) ] (. tmpl process (convertMap map) *out*) )) the clojure.ftl is a free marker template. I think that with clojure's maps implementing Map that the (convertMap) I had required previously is no longer necessary. bd On Fri, 05 Dec 2008 11:22:04 +0100 Jeff Rose <[EMAIL PROTECTED]> wrote: > > Rich Hickey wrote: > > > > > > On Dec 3, 1:04 pm, Jeff Rose <[EMAIL PROTECTED]> wrote: > >> I've just pushed a template library for Clojure up onto github for > >> public use. You can find it here: > >> > >> http://github.com/rosejn/clj-libs/tree/master > >> > >> This library is based loosely on erb from Ruby, which is the only > >> other template system I've used, and it allows you to insert > >> Clojure scriptlets inside a text document. Following is a short > >> example of how it currently works. Any thoughts, suggestions or > >> feedback are welcome. I plan on making it easier to instantiate > >> pages by passing a hash, or maybe a sequence of hashes, which will > >> be successively bound for you. I'll probably add some > >> configuration options for handling whitespace and trimming > >> newlines too. Any other ideas or patches welcome. > >> > > > > Neat! One thing I recommend is that you consider taking a functional > > approach to templates - it would be much more in line with Clojure. > > Two examples of a more functional approach are: > > > > StringTemplate > > http://www.stringtemplate.org/ > > > > Google XML Pages > > http://code.google.com/p/gxp/ > > > > Rich > > Ok, I can see the benefits of a functional style template. Do you > think the important aspect of this is whether you use a push or a > pull model for populating forms with data? In a functional style you > would pass all the necessary values to a function, which would then > populate the form and return a result. I don't like the idea of > having to use XML or some mini-language to do variable replacement, > if statements, and iteration over collections though. If I make the > template library a push model where you send it the values, but you > just use Clojure code to determine how they get used, does that still > fit the bill? > > As for the javascript template engines, I think that kind of solution > might be great for a websites, but a template engine like this is > useful for many applications besides filling in html pages, so I'd > still like to have a generic template mechanism from within Clojure. > From the above, I think StringTemplate has some interesting ideas. > I'm going to look into supporting recursive template application and > include mechanisms. > > -Jeff > > > -- None are more hopelessly enslaved than those who falsely believe they are free — Goethe --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---