File tree Expand file tree Collapse file tree 2 files changed +21
-5
lines changed Expand file tree Collapse file tree 2 files changed +21
-5
lines changed Original file line number Diff line number Diff line change 41
41
" can only contain 2 non-whitespace forms." )
42
42
(assert (keyword? (first exs))
43
43
" first form in namespaced map needs to be keyword." )
44
- (assert (not (namespace (first exs)))
45
- " keyword for namespaced map may not be already namespaced." )
46
44
(assert (map? (second exs))
47
45
" second form in namespaced map needs to be map." )))
48
46
52
50
:namespaced-map )
53
51
(printable-only? [_] false )
54
52
(sexpr [this]
55
- (let [[ns m] (node/sexprs children)
56
- ns (name ns )]
53
+ (let [[nspace' m] (node/sexprs children)
54
+ nspace (if (namespace nspace')
55
+ (-> (ns-aliases *ns*)
56
+ (get (symbol (name nspace')))
57
+ (ns-name )
58
+ (name ))
59
+ (name nspace'))]
60
+ (assert nspace
61
+ (str " could not resolve namespace alias for namespaced map: "
62
+ (namespace nspace')))
57
63
(->> (for [[k v] m
58
64
:let [k' (cond (not (keyword? k)) k
59
65
(namespace k) k
60
- :else (keyword ns (name k)))]]
66
+ :else (keyword nspace (name k)))]]
61
67
[k' v])
62
68
(into {}))))
63
69
(length [_]
Original file line number Diff line number Diff line change 241
241
" #:abc{:x 1, :y 1}"
242
242
" #:abc {:x 1, :y 1}" ))
243
243
244
+ (deftest t-parsing-namespaced-maps-with-namespace-alias
245
+ (are [?s]
246
+ (let [n (p/parse-string ?s)]
247
+ (is (= :namespaced-map (node/tag n)))
248
+ (is (= (count ?s) (node/length n)))
249
+ (is (= ?s (node/string n)))
250
+ (is (= {::node/x 1 , ::node/y 1 } (node/sexpr n))))
251
+ " #::node{:x 1, :y 1}"
252
+ " #::node {:x 1, :y 1}" ))
253
+
244
254
(deftest t-parsing-exceptions
245
255
(are [?s ?p]
246
256
(is (thrown? Exception ?p (p/parse-string ?s)))
You can’t perform that action at this time.
0 commit comments