Skip to content

Instantly share code, notes, and snippets.

@sunng87
Created September 11, 2018 08:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sunng87/58da2c55240adee5fc7d8e6b1af38c48 to your computer and use it in GitHub Desktop.
Save sunng87/58da2c55240adee5fc7d8e6b1af38c48 to your computer and use it in GitHub Desktop.
(defn camelcase-to-delimitered [k delimeter]
(->> (clojure.string/split k #"(?=[A-Z])")
(map clojure.string/lower-case)
(clojure.string/join delimeter)))
(defn camelcase-to-delimitered-keys [m delimiter]
(let [trans (fn [[k v]]
(let [[strfn keyfn] (if (keyword? k)
[name keyword]
[identity identity])
str-key (strfn k)]
[(keyfn (camelcase-to-delimitered str-key delimiter)) v]))]
(clojure.walk/postwalk (fn [v] (if (map? v) (into {} (map trans v)) v)) m)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment