adding this new binding syntax?
[(attrs map?) contents] ; optional first map argument
[(attrs map? {}) contents] ; with default value
[(s String)]
; is shorthand for
[(s #(instance? String %))]
; a function taking optional map, vector, string arguments.
[(m map?) (v vector?) (s
What about adding this new binding syntax?
[(attrs map?) contents] ; optional first map argument
[(attrs map? {}) contents] ; with default value
[(s String)]
; is shorthand for
[(s #(instance? String %))]
; a function taking optional map, vector, string arguments.
[(m map?) (v
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
You could look at the impl:
https://github.com/weavejester/hiccup/blob/master/src/hiccup/def.clj
On Mon, Jun 3, 2013 at 12:22 PM, Alice dofflt...@gmail.com wrote:
I often need to do this when writing hiccup helper functions:
(defn my-widget
[ args]
(let [attrs(if (map? (first
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
I sometimes need to inspect or modify the map in the function, but
defelem only merges the map.
On Jun 4, 2:30 am, gaz jones gareth.e.jo...@gmail.com wrote:
You could look at the impl:
https://github.com/weavejester/hiccup/blob/master/src/hiccup/def.clj
On Mon, Jun 3, 2013 at 12:22 PM,
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(); jimpil1...@gmail.com wrote:
On 03/06/13 18:22, Alice wrote:
I often
On 03/06/13 19:04, Alice wrote:
It's more readable.
(my-widget {:id id1} hello world)
you can get to almost exactly that with the last variant I posted.
(defn my-widget
([attrs contents] (apply widget-creator attrs contents)) ;;I have no idea
what widget-creator might be
([contents]
(defn my-widget
([attrs contents] (apply widget-creator attrs contents)) ;;I have no idea
what widget-creator might be
([contents] (my-widget {} contents))
([] (my-widget {} []))
contents of one arity version can be a map. so the code should be
(defn my-widget
([attrs
Hi,
there is always the possibility of a macro.
(defmacro defwidget
[name body]
(let [[docstring [attrs _ contents] body]
(if (string? (first body))
[(first body) (second body) (nthnext body 2)]
[nil (first body) (next body)])]
10 matches
Mail list logo