Comments (3)
Something like:
(zipmap (map ->kebab-case (keys your-map)) (vals your-map))
?
from camel-snake-kebab.
Not quite like that as that method doesn't traverse the map for nested keys:
(defn transform-keys [f m]
(zipmap (map f (keys m)) (vals m)))
(transform-keys ->kebab-case-keyword {"oneTwo" 12 "threeFour" {"fiveSix" 56}})
=> {:one-two 12, :three-four {"fiveSix" 56}}
I was thinking one of the following:
(defn transform-keys
"Recursively transforms all map keys in coll with t."
[t m]
(let [f (fn [[k v]] [(t k) v])]
(walk/postwalk (fn [x] (if (map? x) (into {} (map f x)) x)) m)))
(transform-keys ->kebab-case-keyword {"oneTwo" 12 "threeFour" {"fiveSix" 56}})
=> {:three-four {:five-six 56}, :one-two 12}
(defn transform-keys
"Recursively transforms all map keys in m with f."
[f m]
(letfn [(mapper [[k v]] [(f k) (if (map? v) (map-keys f v) v)])]
(into {} (map mapper m))))
(transform-keys ->kebab-case-keyword {"oneTwo" 12 "threeFour" {"fiveSix" 56}})
=> {:three-four {:five-six 56}, :one-two 12}
from camel-snake-kebab.
transform-keys
has now been added to master
. I'll close this issue when the next version is released.
from camel-snake-kebab.
Related Issues (20)
- Strict conversion functions? HOT 3
- Numbers HOT 2
- Unexpected behavior when mixing numbers and characters on a name HOT 4
- namespaces are filtered from processed keys HOT 3
- could not eval camel-snake-kebab.core in self-hosted clojurescript. HOT 1
- README version is not on Clojars HOT 1
- Conversion from bean function fails HOT 1
- Create a web site for the project and move most of the README content there HOT 1
- Test with Clojure 1.10.0
- Add deps.edn
- Syntax error compiling with figwheel HOT 4
- String w/ colon delimiters and numbers results in unexpected hyphen when ->kebab-casing. HOT 7
- Request for release HOT 2
- (transform-keys ->kebab-case-keyword data-map) failed for numerical keys HOT 1
- Should conversion functions return nil on nil input? HOT 2
- Null Pointer Exception when separator is only character in string HOT 5
- transform-keys clears metadata HOT 1
- suggestion: support for plain text output
- License name should specify 1.0
- Request for a new version release HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from camel-snake-kebab.