Hashstructor
There comes a time in every wee programmer's life (and all programmers are, for the purposes of this readme, wee or previously wee) when one must take a big blob of JSON or YAML and make it into an object. Or worse, a hierarchy of objects. This leads to lots of very manual parsing and gnashing of teeth. Some libraries, like the mildly spiffy constructor, allow you to defray some of this pain by letting you pass in hashes to build objects, but this only goes so far: no type coercion, no nested types.
Finally I got tired of this mess when building a game prototype and writing enough stupid read-in code of data files that I decided to Fix This Situation. (You can argue that I got sidetracked; I won't disagree.) After about three hours of late-night work, I'm somewhat proud to unveil Hashstructor: your one-stop shop for mangling the heck out of Ruby hashes and building neat-o object trees out of them. (The reverse, breaking these data structures down into hashes, is a TODO.)
Hashstructor is fully documented (100% coverage in
yard
) and comes with a fairly exhaustive set of tests to prove
that it actually does what it's supposed to do.
Installation
Add this line to your application's Gemfile:
gem 'hashstructor'
And then execute:
$ bundle
Or install it yourself as:
$ gem install hashstructor
Usage
Hashstructor is pretty easy to deal with, but it's 2:10AM as I write
this and I am very tired, so I shall direct you to the fancy
and/or schmancy spec
folder. In test_classes
you will find examples of nearly every aspect of Hashstructor, and
hashstructor_spec.rb
explains them with a little context.
Hashstructor is designed for Ruby 2.0 and above, but may run on Ruby 1.9.x; failure to do so is not a bug.
Development
After checking out the repo, run bin/setup
to install
dependencies. Then, run rake rspec
to run the tests. You can
also run bin/console
for an interactive prompt that will allow
you to experiment.
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.
Contributing
Bug reports and pull requests are welcome on GitHub at github.com/eropple/hashstructor. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
License
The gem is available as open source under the terms of the MIT License.