Hashie is a collection of classes and mixins that make Ruby hashes more powerful. https://github.com/hashie/hashie
Go to file
Michael Bleigh a2ecc494e2 Regenerated gemspec for version 0.1.6 2010-01-13 18:15:03 -05:00
lib should not convert the type of Hashie::Mashes childs to Hashie::Mash 2010-01-14 07:14:24 +08:00
spec should not convert the type of Hashie::Mashes childs to Hashie::Mash 2010-01-14 07:14:24 +08:00
.document Initial commit to hashie. 2009-09-02 21:32:57 -04:00
.gitignore Removes a debugging puts and updates the .gitignrore to ignore gems 2009-11-13 17:30:45 +11:00
LICENSE Adding README 2009-11-12 09:08:55 -05:00
README.rdoc Updates README 2009-11-12 10:06:13 -05:00
Rakefile Adding README 2009-11-12 09:08:55 -05:00
VERSION Version bump to 0.1.6 2010-01-13 18:15:03 -05:00
hashie.gemspec Regenerated gemspec for version 0.1.6 2010-01-13 18:15:03 -05:00

README.rdoc

= Hashie

Hashie is a growing collection of tools that extend Hashes and make
them more useful.

== Installation

Hashie is a gem and is available on Gemcutter. If you don't have Gemcutter,
install it:

    gem install gemcutter
    gem tumble
    
Then you can install Hashie:

    gem install hashie

== Mash

Mash is an extended Hash that gives simple pseudo-object functionality
that can be built from hashes and easily extended. It is designed to
be used in RESTful API libraries to provide easy object-like access 
to JSON and XML parsed hashes.

=== Example:
  
    mash = Hashie::Mash.new
    mash.name? # => false
    mash.name # => nil
    mash.name = "My Mash"
    mash.name # => "My Mash"
    mash.name? # => true
    mash.inspect # => <Hashie::Mash name="My Mash">
  
    mash = Mash.new
    # use bang methods for multi-level assignment
    mash.author!.name = "Michael Bleigh"
    mash.author # => <Hashie::Mash name="Michael Bleigh">
  
== Dash

Dash is an extended Hash that has a discrete set of defined properties
and only those properties may be set on the hash. Additionally, you
can set defaults for each property.

=== Example:

    class Person < Hashie::Dash
      property :name
      property :email
      property :occupation, :default => 'Rubyist'
    end

    p = Person.new
    p.name # => nil
    p.email = 'abc@def.com'
    p.occupation   # => 'Rubyist'
    p.email        # => 'abc@def.com'
    p[:awesome]    # => NoMethodError
    p[:occupation] # => 'Rubyist'
    
    p = Person.new(:name => "Bob")
    p.name       # => 'Bob'
    p.occupation # => 'Rubyist'
  

== Note on Patches/Pull Requests
 
* Fork the project.
* Make your feature addition or bug fix.
* Add tests for it. This is important so I don't break it in a future version unintentionally.
* Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
* Send me a pull request. Bonus points for topic branches.

== Authors

* Michael Bleigh

== Copyright

Copyright (c) 2009 Intridea, Inc (http://intridea.com/). See LICENSE for details.