| Class | Hashie::Mash |
| In: |
lib/hashie/mash.rb
|
| Parent: | Hashie::Hash |
Mash allows you to create pseudo-objects that have method-like accessors for hash keys. This is useful for such implementations as an API-accessing library that wants to fake robust objects without the overhead of actually doing so. Think of it as OpenStruct with some additional goodies.
A Mash will look at the methods you pass it and perform operations based on the following rules:
mash = Mash.new mash.name? # => false mash.name = "Bob" mash.name # => "Bob" mash.name? # => true
hash = {:a => {:b => 23, :d => {:e => "abc"}}, :f => [{:g => 44, :h => 29}, 12]}
mash = Mash.new(hash)
mash.a.b # => 23
mash.a.d.e # => "abc"
mash.f.first.g # => 44
mash.f.last # => 12
mash = Mash.new mash.author # => nil mash.author! # => <Mash> mash = Mash.new mash.author!.name = "Michael Bleigh" mash.author # => <Mash name="Michael Bleigh">
| inspect | -> | to_s |
| new | -> | [] |
| [] | -> | regular_reader |
| regular_writer | -> | : |
| dup | -> | regular_dup |
If you pass in an existing hash, it will convert it to a Mash including recursively descending into arrays and hashes, converting them as well.
Retrieves an attribute set in the Mash. Will convert any key passed in to a string before retrieving.
Will return true if the Mash has had a key set in addition to normal respond_to? functionality.