blob: 8e19e2f47a81ecbb9ab927cb93da6b7773fdd6c7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
(ns dompa.nodes)
(defn $
"Creates a new node
Usage:
```clojure
($ :div
($ \"hello world\" ))
```"
[name & opts]
(if (string? name)
{:node/name :dompa/text
:node/value (apply str name opts)}
(let [first-opt (first opts)
attrs? (and (map? first-opt)
(not (contains? first-opt :node/name)))
attrs (if attrs? first-opt {})
children (if attrs? (rest opts) opts)]
(cond-> {:node/name name}
attrs? (assoc :node/attrs attrs)
(seq children) (assoc :node/children children)))))
|