snake case hash: a descendent of the 'ruby hash' gem without hashie namespace conflicts
Pull request Compare This branch is 4 commits behind corprew:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Snake Case Hash (was: Rash)

This version of rash has been renamed snake_case_hash gem (with class Hashie::SCHash) to avoid namespace conflicts in gemspec.

This was needed because Hashie version 3 introduced a new class Hashie::Rash that interfered with the Hashie::Rash class that was in the Rash gem, and the maintainer of the Rash gem hasn't been updated. I guess this is a fork but just to avoid problems around loading gems in .gemspec files (which unlike bundler doesn't allow you to specify git sources.)

Snake Cash Hash is an extension to Hashie ( ) that was originally named Rash.

SCHash subclasses Hashie::Mash to convert all keys in the hash to underscore

The purpose of this is when working w/ Java (or any other apis) that return hashes (including nested) that have camelCased keys

You will now be able to access those keys through underscored key names (camelCase still available)


@rash ={
  "varOne" => 1,
  "two" => 2,
  :three => 3,
  :varFour => 4,
  "fiveHumpHumps" => 5,
  :nested => {
    "NestedOne" => "One",
    :two => "two",
    "nested_three" => "three"
  "nestedTwo" => {
    "nested_two" => 22,
    :nestedThree => 23

@rash.var_one                 # => 1
@rash.two                     # => 2
@rash.three                   # => 3
@rash.var_four                # => 4
@rash.five_hump_humps         # => 5
@rash.nested.nested_one       # => "One"
@rash.nested.two              # => "two"
@rash.nested.nested_three     # => "three"
@rash.nested_two.nested_two   # => 22
@rash.nested_two.nested_three # => 23

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don't break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.


Copyright © 2010 Tom Cocca. See LICENSE for details.