HashKeyTransformer
Ruby applications typically use underscore (also called "snake_case
") as their convention for Hash
keys. When sending data from a Ruby application to another application it is often useful to transform the style of hash keys to the style expected by the other application (camelCase
or dashed-case
for example). Likewise, when receiving data from an external application, it is often useful to transform the style of incoming hash keys to the underscore style common in Ruby.
hash_key_transformer
makes it easy to deeply transform a JSON-like data structure from one style of key to another.
The following transformations are supported:
From | To |
---|---|
camel | underscore |
underscore | camel |
dash | underscore |
underscore | dash |
Currently, all transformations output Hash
keys as :symbols
. This could be adjusted if there is interest.
For example, when receiving data from a JavaScript client application, hash_key_transformer
can easily transform the following data structure from this:
{
'keyName1' => 1,
'keyName2' => [
{
'keyName3' => [
{
'keyName4' => 4,
'keyName5' => 5
}
]
}
]
}
to this:
{
key_name1: 1,
key_name2: [
{
key_name3: [
{
key_name4: => 4,
key_name5: => 5
}
]
}
]
}
Installation
Add this line to your application's Gemfile:
gem 'hash_key_transformer'
And then execute:
$ bundle
Or install it yourself as:
$ gem install hash_key_transformer
Usage
Use the appropriate transformation from this list:
#transform_camel_to_underscore
#transform_underscore_to_camel
#transform_dash_to_underscore
#transform_underscore_to_dash
For example:
require 'hash_key_transformer'
transformed_object = HashKeyTransformer.transform_camel_to_underscore(object)
Development
Source code for the gem itself is located under the src/gem
directory. Source code for the tests is located under src/test
. Separating the test source code into a separate project allows the tests to consume the gem source code as a gem, which more closely mirrors actual use by other developers.
Gem
Navigate to src/gem
in your terminal.
After checking out the repo, run bin/setup
to install gem dependencies.
You can also run bin/console
for an interactive prompt that will allow you to experiment.
Publishing Gem Releases
To install this gem onto your local machine, run bundle exec rake install
.
To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Tests
Navigate to src/test
in your terminal.
Run bin/setup
to install test dependencies.
Run bundle exec rake
to run the tests.
Contributing
Bug reports and pull requests are welcome on GitHub here.