aboutsummaryrefslogtreecommitdiffstats
path: root/src/chameleon/txform.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/chameleon/txform.clj')
-rw-r--r--src/chameleon/txform.clj19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/chameleon/txform.clj b/src/chameleon/txform.clj
new file mode 100644
index 0000000..95f357f
--- /dev/null
+++ b/src/chameleon/txform.clj
@@ -0,0 +1,19 @@
+(ns chameleon.txform
+ (:require [cheshire.core :refer :all]
+ [clojure.string :as str]))
+
+(defn map-keywords
+ "Maps all string based keys to keywords"
+ [kmap]
+ (into {} (for [[key value] kmap] [(keyword key) value])))
+
+(defn flatten-key
+ "Maps a parent-child pair to a period separated keyword"
+ [parent child]
+ (keyword (str (name parent) "." (name child))))
+
+(defn flatten-entry
+ "Flattens a nested map entry to a period separated keyword entry"
+ [map key]
+ (reduce #(assoc %1 (flatten-key key (first %2)) (second %2))
+ {} (seq (key map))))