Skip to content

Instantly share code, notes, and snippets.

@stoeckley
Forked from semperos/clj->js.clj
Last active August 29, 2015 14:17
Show Gist options
  • Save stoeckley/fd829b0d554f13f46e26 to your computer and use it in GitHub Desktop.
Save stoeckley/fd829b0d554f13f46e26 to your computer and use it in GitHub Desktop.
(defn clj->js
"Recursively transforms ClojureScript maps into Javascript objects,
other ClojureScript colls into JavaScript arrays, and ClojureScript
keywords into JavaScript strings."
[x]
(cond
(string? x) x
(keyword? x) (name x)
(map? x) (.strobj (reduce (fn [m [k v]]
(assoc m (clj->js k) (clj->js v))) {} x))
(coll? x) (apply array (map clj->js x))
:else x))
(defn clj->js
"Recursively transforms ClojureScript maps into Javascript objects,
other ClojureScript colls into JavaScript arrays, and ClojureScript
keywords into JavaScript strings."
[x]
(cond
(string? x) x
(keyword? x) (name x)
(map? x) (.-strobj (reduce (fn [m [k v]]
(assoc m (clj->js k) (clj->js v))) {} x))
(coll? x) (apply array (map clj->js x))
:else x))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment