README.md in mashed-0.5.1 vs README.md in mashed-0.9.0

- old
+ new

@@ -31,12 +31,51 @@ tasks.each do |task| puts tasks.title end ``` +### A Mash Is Not A Hash + +```ruby +Mash = Mashed::Mash + +m = Mash.new(a: "A", b: "B") +m.map { |key, value| puts [key, value].inspect } # => raise + +# assuming activesupport is present... + +m.with_indifferent_access # => nil +# there is no key of "with_indifferent_access" for the internal hash +``` + ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request + +## StringyHash + +To help make the Mash work there also is a StringyHash class. It's a +simple delegate to the normal Hash except that it tries to enforce that +all incoming and outgoing keys are strings. + +### Usage + +```ruby +StringyHash = Mash::StringyHash + +sh = StringyHash.new(title: "Hello", starred: false, completed_at: nil) +sh.keys # => ["title", "starred", "completed_at"] +sh[:title] # => "Hello" +sh["title"] # => "Hello" + +class Title + def to_s + "title" + end +end + +sh[Title.new] # => "Hello" +```