Skip to content

Instantly share code, notes, and snippets.

@NeCkEr
Created September 22, 2015 23:21
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 NeCkEr/a3af655b141f85b7aef6 to your computer and use it in GitHub Desktop.
Save NeCkEr/a3af655b141f85b7aef6 to your computer and use it in GitHub Desktop.
Some Clojure parsing and flatten
(defn parse-data
[form-data]
(->> (map (fn [[k v]] [k (:value v)]))
(into {})))
(defn flatten-keys* [a ks m]
(if (map? m)
(reduce into (map (fn [[k v]] (flatten-keys* a (conj ks k) v)) (seq m)))
(assoc a ks m)))
(defn flatten-keys [m] (flatten-keys* {} [] m))
(defn flatten-data
[form-data]
(reduce
(fn [result kv]
(if (= :value (last (first kv)))
(let [nest-level (count (first kv))]
(conj result {(nth (first kv) (- nest-level 2)) (last kv)}))
result
))
{}
(flatten-keys form-data))
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment