@@ -10495,6 +10495,13 @@ reduces them without incurring seq initialization"
1049510495 (doseq [s ss]
1049610496 (-write writer s)))
1049710497
10498+ (defn write-all-array [writer arr]
10499+ (let [len (alength arr)]
10500+ (loop [i 0 ]
10501+ (when (< i len)
10502+ (-write writer (aget arr i))
10503+ (recur (inc i))))))
10504+
1049810505(defn string-print [x]
1049910506 (when (nil? *print-fn*)
1050010507 (throw (js/Error. " No *print-fn* fn set for evaluation environment" )))
@@ -10516,10 +10523,9 @@ reduces them without incurring seq initialization"
1051610523
1051710524(defn ^:private quote-string
1051810525 [s]
10519- (str \"
10520- (.replace s (js/RegExp " [\\\\\"\b\f\n\r\t ]" " g" )
10521- (fn [match] (unchecked-get char-escapes match)))
10522- \"))
10526+ (let [s' ^string (.replace s (js/RegExp " [\\\\\"\b\f\n\r\t ]" " g" )
10527+ (fn [match] (unchecked-get char-escapes match)))]
10528+ (str \" s' \")))
1052310529
1052410530(declare print-map )
1052510531
@@ -10548,23 +10554,27 @@ reduces them without incurring seq initialization"
1054810554 (-pr-writer obj writer opts)
1054910555
1055010556 (or (true ? obj) (false ? obj))
10551- (-write writer (str obj))
10557+ (-write writer (.toString obj))
1055210558
1055310559 (number? obj)
1055410560 (-write writer
1055510561 (cond
1055610562 ^boolean (js/isNaN obj) " ##NaN"
1055710563 (identical? obj js/Number.POSITIVE_INFINITY) " ##Inf"
1055810564 (identical? obj js/Number.NEGATIVE_INFINITY) " ##-Inf"
10559- :else (str obj)))
10565+ :else (.toString obj)))
1056010566
1056110567 (object? obj)
1056210568 (do
1056310569 (-write writer " #js " )
1056410570 (print-map
10565- (map (fn [k]
10566- (MapEntry. (cond-> k (some? (re-matches #"[A-Za-z_\*\+\? !\- '][\w\*\+\? !\- ']*" k)) keyword) (unchecked-get obj k) nil ))
10567- (js-keys obj))
10571+ (prim-seq
10572+ (.map
10573+ (fn [k]
10574+ (MapEntry.
10575+ (cond-> k (some? (re-matches #"[A-Za-z_\*\+\? !\- '][\w\*\+\? !\- ']*" k)) keyword)
10576+ (unchecked-get obj k) nil ))
10577+ (js-keys obj)))
1056810578 pr-writer writer opts))
1056910579
1057010580 (array? obj)
@@ -10580,45 +10590,48 @@ reduces them without incurring seq initialization"
1058010590 name (if (or (nil? name) (gstring/isEmpty name))
1058110591 " Function"
1058210592 name)]
10583- (write-all writer " #object[" name
10584- (if *print-fn-bodies*
10585- (str " \" " (str obj) " \" " )
10586- " " )
10587- " ]" ))
10593+ (write-all-array writer
10594+ (array
10595+ " #object[" name
10596+ (if *print-fn-bodies*
10597+ (str " \" " ^string (.toString obj) " \" " )
10598+ " " )
10599+ " ]" )))
1058810600
1058910601 (instance? js/Date obj)
1059010602 (let [normalize (fn [n len]
10591- (loop [ns (str n)]
10603+ (loop [ns (.toString n)]
1059210604 (if (< (count ns ) len)
10593- (recur (str " 0" ns ))
10605+ (recur (str " 0" ^string ns ))
1059410606 ns )))]
10595- (write-all writer
10596- " #inst \" "
10597- (normalize (.getUTCFullYear obj) 4 ) " -"
10598- (normalize (inc (.getUTCMonth obj)) 2 ) " -"
10599- (normalize (.getUTCDate obj) 2 ) " T"
10600- (normalize (.getUTCHours obj) 2 ) " :"
10601- (normalize (.getUTCMinutes obj) 2 ) " :"
10602- (normalize (.getUTCSeconds obj) 2 ) " ."
10603- (normalize (.getUTCMilliseconds obj) 3 ) " -"
10604- " 00:00\" " ))
10605-
10606- (regexp? obj) (write-all writer " #\" " (.-source obj) " \" " )
10607-
10608- (js-symbol? obj) (write-all writer " #object[" (.toString obj) " ]" )
10607+ (write-all-array writer
10608+ (array
10609+ " #inst \" "
10610+ (normalize (.getUTCFullYear obj) 4 ) " -"
10611+ (normalize (inc (.getUTCMonth obj)) 2 ) " -"
10612+ (normalize (.getUTCDate obj) 2 ) " T"
10613+ (normalize (.getUTCHours obj) 2 ) " :"
10614+ (normalize (.getUTCMinutes obj) 2 ) " :"
10615+ (normalize (.getUTCSeconds obj) 2 ) " ."
10616+ (normalize (.getUTCMilliseconds obj) 3 ) " -"
10617+ " 00:00\" " )))
10618+
10619+ (regexp? obj) (write-all-array writer (array " #\" " (.-source obj) " \" " ))
10620+
10621+ (js-symbol? obj) (write-all-array writer (array " #object[" (.toString obj) " ]" ))
1060910622
1061010623 :else
1061110624 (if (some-> obj .-constructor .-cljs$lang$ctorStr)
10612- (write-all writer
10613- " #object[" (.replace (.. obj -constructor -cljs$lang$ctorStr)
10614- (js/RegExp. " /" " g" ) " ." ) " ]" )
10625+ (write-all-array writer
10626+ ( array " #object[" (.replace (.. obj -constructor -cljs$lang$ctorStr)
10627+ (js/RegExp. " /" " g" ) " ." ) " ]" ) )
1061510628 (let [name (some-> obj .-constructor .-name)
1061610629 name (if (or (nil? name) (gstring/isEmpty name))
1061710630 " Object"
1061810631 name)]
1061910632 (if (nil? (. obj -constructor))
10620- (write-all writer " #object[" name " ]" )
10621- (write-all writer " #object[" name " " (str obj) " ]" ))))))))
10633+ (write-all-array writer ( array " #object[" name " ]" ) )
10634+ (write-all-array writer ( array " #object[" name " " (.toString obj) " ]" ) ))))))))
1062210635
1062310636(defn- pr-writer
1062410637 " Prefer this to pr-seq, because it makes the printing function
@@ -10744,15 +10757,15 @@ reduces them without incurring seq initialization"
1074410757 (recur new-ns entries (assoc lm (strip-ns k) v)))))
1074510758 [ns lm]))))
1074610759
10747- (defn print-prefix-map [prefix m print-one writer opts]
10760+ (defn print-prefix-map [^string prefix m print-one writer opts]
1074810761 (pr-sequential-writer
1074910762 writer
1075010763 (fn [e w opts]
1075110764 (do (print-one (key e) w opts)
1075210765 (-write w \space)
1075310766 (print-one (val e) w opts)))
1075410767 (str prefix " {" ) " , " " }"
10755- opts (seq m)))
10768+ opts (- seq m)))
1075610769
1075710770(defn print-map [m print-one writer opts]
1075810771 (let [[ns lift-map] (when (map? m)
0 commit comments