Skip to content

Commit 272d30e

Browse files
committed
* lower print-map
- lift pr-map-entry-helper - lift-ns uses array of MapEntry instead of actual map
1 parent e611bd0 commit 272d30e

File tree

1 file changed

+27
-21
lines changed

1 file changed

+27
-21
lines changed

src/main/cljs/cljs/core.cljs

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10520,6 +10520,12 @@ reduces them without incurring seq initialization"
1052010520
(implements? IMeta obj)
1052110521
(not (nil? (meta obj)))))
1052210522

10523+
(defn- pr-map-entry [k v]
10524+
(reify
10525+
IMapEntry
10526+
(-key [_] k)
10527+
(-val [_] v)))
10528+
1052310529
(defn- pr-writer-impl
1052410530
[obj writer opts]
1052510531
(cond
@@ -10557,12 +10563,9 @@ reduces them without incurring seq initialization"
1055710563
(.map
1055810564
(js-keys obj)
1055910565
(fn [k]
10560-
(reify
10561-
IMapEntry
10562-
(-key [_]
10563-
(cond-> k (some? (.match k #"^[A-Za-z_\*\+\?!\-'][\w\*\+\?!\-']*$")) keyword))
10564-
(-val [_]
10565-
(unchecked-get obj k)))))
10566+
(pr-map-entry
10567+
(cond-> k (some? (.match k #"^[A-Za-z_\*\+\?!\-'][\w\*\+\?!\-']*$")) keyword)
10568+
(unchecked-get obj k))))
1056610569
pr-writer writer opts))
1056710570

1056810571
(array? obj)
@@ -10731,20 +10734,22 @@ reduces them without incurring seq initialization"
1073110734
(keyword nil (name named))))
1073210735

1073310736
(defn- lift-ns
10734-
"Returns [lifted-ns lifted-map] or nil if m can't be lifted."
10737+
"Returns #js [lifted-ns lifted-map] or nil if m can't be lifted."
1073510738
[m]
1073610739
(when *print-namespace-maps*
10737-
(loop [ns nil
10738-
[[k v :as entry] & entries] (seq m)
10739-
lm (empty m)]
10740-
(if entry
10741-
(when (or (keyword? k) (symbol? k))
10742-
(if ns
10743-
(when (= ns (namespace k))
10744-
(recur ns entries (assoc lm (strip-ns k) v)))
10745-
(when-let [new-ns (namespace k)]
10746-
(recur new-ns entries (assoc lm (strip-ns k) v)))))
10747-
[ns lm]))))
10740+
(let [lm #js []]
10741+
(loop [ns nil
10742+
[[k v :as entry] & entries] (seq m)]
10743+
(if entry
10744+
(when (or (keyword? k) (symbol? k))
10745+
(if ns
10746+
(when (= ns (namespace k))
10747+
(.push lm (pr-map-entry (strip-ns k) v))
10748+
(recur ns entries))
10749+
(when-let [new-ns (namespace k)]
10750+
(.push lm (pr-map-entry (strip-ns k) v))
10751+
(recur new-ns entries))))
10752+
#js [ns lm])))))
1074810753

1074910754
(defn print-prefix-map [prefix m print-one writer opts]
1075010755
(pr-sequential-writer
@@ -10757,10 +10762,11 @@ reduces them without incurring seq initialization"
1075710762
opts (seq m)))
1075810763

1075910764
(defn print-map [m print-one writer opts]
10760-
(let [[ns lift-map] (when (map? m)
10761-
(lift-ns m))]
10765+
(let [ns&lift-map (when (map? m)
10766+
(lift-ns m))
10767+
ns (some-> ns&lift-map (aget 0))]
1076210768
(if ns
10763-
(print-prefix-map (str "#:" ns) lift-map print-one writer opts)
10769+
(print-prefix-map (str "#:" ns) (aget ns&lift-map 1) print-one writer opts)
1076410770
(print-prefix-map nil m print-one writer opts))))
1076510771

1076610772
(extend-protocol IPrintWithWriter

0 commit comments

Comments
 (0)