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):