Hash-o (pronounced Hash-Oh!) is a Ruby gem that provides a simple way for creating the #to_h
methods in objects.
The #to_h
is a standard interface added in Ruby 2.0 and it should return a hash representation of an object.
Add this line to your application's Gemfile:
gem 'hasho'
And then execute:
$ bundle
Or install it yourself as:
$ gem install hasho
Let's use a simple example to ilustrate the usage of hash-o:
class User
include Hasho
def name
"John Smith"
end
def email
"[email protected]"
end
end
user = User.new
user.to_h
# => { name: "John Smith", email: "[email protected]" }
Hash-o works out of the box because, if no options are specified, it will reflect on the object's public interface and generate the hash based on it.
If for any reason you don't want to include all the object's public interface, you can specify which attributes will be included in the hash:
class User
include Hasho
hash_methods :name, :email
def name
"John Smith"
end
def email
"[email protected]"
end
def password
"superSecretOMG!"
end
end
user = User.new
user.to_h
# => { name: "John Smith", email: "[email protected]" }
This is pretty much it, simple but effective.
- Add an
:except
option to method call so user can tell which attributes shouldn't be added. - Accept attributes (other than those already on the method interface) and add them as keys/values to the hash.
- Accept an attribute with an associated
Proc
and use result as the value on the hash.
- Fork it ( https://github.com/[my-github-username]/hasho/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request