HardBoiled
simply define a mapping from your model to a simple hash. For those who worked with thoughtbot's factory girl the DSL should be familiar.
Installation
gem install hard_boiled
Usage
require 'hard_boiled'
egg = OpenStruct.new({
:boil_time => 7,
:temperature => 99,
:colour => "beige"
})
HardBoiled::Presenter.define egg do
time :from => :boil_time
colour
temperature :format => "%d ℃"
end
# => { :time => 7, :temperature => "99 ℃", :colour => "beige" }
# Or with traits
HardBoiled::Presenter.define(egg, :only => [:instructions]) do
with_trait(:instructions) do
time :from => :boil_time
temperature :format => "%d ℃"
end
with_trait(:presentation) do
colour
end
omnipresent_slogan "proudly produced on organic farms"
end
# => { :time => 7, :temperature => "99 ℃", :omnipresent_slogan => "proudly produced on organic farms" }
for more examples see the tests in the spec
directory.
Similar Projects
If hard_boiled isn't your cup of tea, go and check out other ways to map models to hashes (for data serialization):