Class | Mash |
In: |
lib/mash.rb
|
Parent: | 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">
VERSION | = | '0.0.3' |
[] | -> | regular_reader |
regular_writer | -> | : |
inspect | -> | regular_inspect |
key? | -> | picky_key? |
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.