Skip to content

Commit 2291779

Browse files
author
Yannick Scherer
committed
add coercion for records.
(see #30)
1 parent 39b6703 commit 2291779

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/rewrite_clj/node/coerce.clj

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
[protocols :as node
88
:refer [NodeCoerceable
99
coerce]]
10-
[reader-macro :refer [var-node]]
10+
[reader-macro
11+
:refer [reader-macro-node var-node]]
1112
[seq :refer [vector-node
1213
list-node
1314
set-node
@@ -83,11 +84,19 @@
8384
(butlast)
8485
(vec))))
8586

87+
(defn- record-node
88+
[m]
89+
(reader-macro-node
90+
[(token-node (symbol (.getName ^Class (class m))))
91+
(map-node (map->children m))]))
92+
8693
(extend-protocol NodeCoerceable
8794
clojure.lang.IPersistentMap
8895
(coerce [m]
8996
(node-with-meta
90-
(map-node (map->children m))
97+
(if (record? m)
98+
(record-node m)
99+
(map-node (map->children m)))
91100
m)))
92101

93102
;; ## Vars

0 commit comments

Comments
 (0)