The same reason that hiccup tag vector is taking optional attribute
map.
It's more readable.
(my-widget {:id "id1"} "hello" "world")
vs.
(my-widget {:attr {:id "id1"} :contents '("hello" "world")})
On Jun 4, 2:38 am, "Jim - FooBar();" <[email protected]> wrote:
> On 03/06/13 18:22, Alice wrote:
>
> > I often need to do this when writing hiccup helper functions:
>
> > (defn my-widget
> > [& args]
> > (let [attrs (if (map? (first args)) (first args) {})
> > contents (if (map? (first args)) (next args) args)]
> > ...
>
> > I found this post, but considering that it is 4 years old, is there
> > any new library developed to help with this situation?.
>
> >https://groups.google.com/group/clojure/browse_frm/thread/125a8af6881...
>
> why are you not using named arguments? Is there somethign in hiccup that
> prevents you from doing so? It seems to me they would save you quite a
> bit of hassle and make the code more evident...
>
> (defn my-widget
> [& {:keys [attrs contents]}]
> ...
>
> or if you don't know exactly what keys will come in you can relax it a
> bit with (defn my-widget [& {:as opts]}] ...
>
> HTH,
>
> Jim
>
> ps: assuming there is no constrain I'd go for this one:
>
> (defn my-widget
> ([attrs contents] ...)
> ([contents] (my-widget {} contents))
> ([] (my-widget {} []))
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
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
---
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.