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.

Reply via email to