Skip to content

Commit d73c1b3

Browse files
committed
add invert-reverse-map to Clojure source map support
1 parent 252ec7a commit d73c1b3

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/main/clojure/cljs/source_map.clj

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,24 @@
309309
(assoc new-lines line new-cols)))
310310
new-lines)))
311311

312+
;; -----------------------------------------------------------------------------
313+
;; Reverse Source Map Inversion
314+
315+
(defn invert-reverse-map
316+
"Given a ClojureScript to JavaScript source map, invert it. Useful when
317+
mapping JavaScript stack traces when environment support is unavailable."
318+
[reverse-map]
319+
(let [inverted (atom (sorted-map))]
320+
(doseq [[line columns] reverse-map]
321+
(doseq [[column column-info] columns]
322+
(doseq [{:keys [gline gcol name]} column-info]
323+
(swap! inverted update-in [gline]
324+
(fnil (fn [columns]
325+
(update-in columns [column] (fnil conj [])
326+
{:line line :col column :name name}))
327+
(sorted-map))))))
328+
@inverted))
329+
312330
(comment
313331
;; INSTRUCTIONS:
314332

0 commit comments

Comments
 (0)