Dave Sann Custom tags are awesome! Just what I was looking for! Do you have this anywhere in clojars.org?
On Thursday, April 25, 2013 10:17:42 AM UTC+1, Dave Sann wrote: > > see this commit for main changes to hiccup > > > https://github.com/davesann/hiccup/commit/e8c06d884eb22a2cdd007f880a9dd5e1c13669a4 > > On Thursday, 25 April 2013 18:55:52 UTC+10, Dave Sann wrote: >> >> I replied to this a long time ago and in the original case - I did not >> see huge value in the suggestion. But recently I wanted to do exactly what >> Murtaza suggests. >> >> There are a couple of reasons why I think this capability would be >> useful. (And rereading Murtaza's email - I think this is what he meant) >> >> 1. The functions defined in hiccup and other libraries are not portable. >> if you rely on these, they will only work if the library maintained has >> copied the function interface exactly. This is not always the case. (as a >> separate comment these utility functions >> would be better separated from the rendering code). >> >> 2. I would be great to write markup that describes your domain, not HTML >> so >> [:address :street "here" :city "there"] >> >> rather than [:div ....lots of html specific bits ... street...] >> >> 3. It would be great to be able to switch the rendering of your domain >> without editing the overall markup structure. >> >> 4. if webcomponents take off - which I hope they do - you may be able to >> gracefully transition by disabling the various tag rewriting again, not >> touching the main markup logic. >> >> So I had a look to see if this can be done - and it can - relatively >> easily. >> I implemented it the easiest way initially - but there are alternative >> possibilities for how this might work. Currently it uses a multimethod - >> but it might be better to pass in "tag expanding functions" when rendering >> - this would be more flexible. >> >> The changes to hiccup to achieve this are quite minor. >> >> See here: https://github.com/davesann/hiccup/commit/custom-tags >> >> I added a basic repl example file >> https://github.com/davesann/hiccup/blob/custom-tags/repl/example.clj >> >> A nice thing here is that incompatibilities between hiccup and cljs >> equivalents could be mitigated if we could agree on a "standard" for >> allowing custom tags. >> >> Thoughts anyone? >> >> Dave >> >> >> >> >> >> >> >> >> On Monday, 14 May 2012 00:31:48 UTC+10, Walter Tetzner wrote: >>> >>> You could do this without adding anything to hiccup. >>> >>> If you wrote a function that, say, used walk, you could have it go >>> through the vectors, and replace the custom tags with what they >>> represent. Then you could just call that before calling `html'. >>> >>> (html >>> (transform >>> [:html >>> [:head >>> [:title "some page"]] >>> [:body >>> [:link-to {:url "http://www.google.com/"} "Hi this is >>> Google"]]])) >>> >>> The benefit to doing it this way over having the macro is that it's >>> clear where the custom tags come from when looking at the invocation >>> of `html'. >>> >>> If you really want `html' to handle it, maybe it could be called with >>> a map of tranform functions? >>> >>> (html {:link-to link-to} >>> [:html >>> [:head >>> [:title "some page"]] >>> [:body >>> [:link-to {:url "http://www.google.com/"} "Hi this is Google"]]]) >>> >>> Either way, I think this ends up being nicer than a macro that changes >>> the behavior of `html'. >>> >>> >>> On Sunday, May 13, 2012 12:35:46 AM UTC-4, Murtaza Husain wrote: >>>> >>>> >>>> -- 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 Note that posts from new members are moderated - please be patient with your first post. 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.