Skip to content

Commit c550217

Browse files
author
Yannick Scherer
committed
make quote node constructors more flexible.
1 parent c5b6cfc commit c550217

File tree

1 file changed

+25
-16
lines changed

1 file changed

+25
-16
lines changed

src/rewrite_clj/node/quote.clj

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,30 +29,39 @@
2929

3030
;; ## Constructors
3131

32+
(defn- ->node
33+
[t prefix sym children]
34+
(node/assert-single-sexpr children)
35+
(->QuoteNode t prefix sym children))
36+
3237
(defn quote-node
3338
[children]
34-
(node/assert-single-sexpr children)
35-
(->QuoteNode
36-
:quote "'" 'quote
37-
children))
39+
(if (sequential? children)
40+
(->node
41+
:quote "'" 'quote
42+
children)
43+
(recur [children])))
3844

3945
(defn syntax-quote-node
4046
[children]
41-
(node/assert-single-sexpr children)
42-
(->QuoteNode
43-
:syntax-quote "`" 'quote
44-
children))
47+
(if (sequential? children)
48+
(->node
49+
:syntax-quote "`" 'quote
50+
children)
51+
(recur [children])))
4552

4653
(defn unquote-node
4754
[children]
48-
(node/assert-single-sexpr children)
49-
(->QuoteNode
50-
:unquote "~" 'unquote
51-
children))
55+
(if (sequential? children)
56+
(->node
57+
:unquote "~" 'unquote
58+
children)
59+
(recur [children])))
5260

5361
(defn unquote-splicing-node
5462
[children]
55-
(node/assert-single-sexpr children)
56-
(->QuoteNode
57-
:unquote-splicing "~@" 'unquote-splicing
58-
children))
63+
(if (sequential? children)
64+
(->node
65+
:unquote-splicing "~@" 'unquote-splicing
66+
children)
67+
(recur [children])))

0 commit comments

Comments
 (0)