github
Advanced Search
  • Home
  • Pricing and Signup
  • Explore GitHub
  • Blog
  • Login

intridea / hashie

  • Admin
  • Watch Unwatch
  • Fork
  • Your Fork
  • Pull Request
  • Download Source
    • 155
    • 10
  • Source
  • Commits
  • Network (10)
  • Issues (0)
  • Downloads (8)
  • Wiki (1)
  • Graphs
  • Branch: master

click here to add a description

click here to add a homepage

  • Switch Branches (1)
    • master ✓
  • Switch Tags (8)
    • v0.2.0
    • v0.1.8
    • v0.1.6
    • v0.1.5
    • v0.1.4
    • v0.1.3
    • v0.1.2
    • v0.1.0
  • Branch List
Sending Request…

Hashie is a simple collection of useful Hash extensions. — Read more

  Cancel

http://rdoc.info/projects/intridea/hashie

  Cancel
  • Private
  • Read-Only
  • HTTP Read-Only

This URL has Read+Write access

Regenerated gemspec for version 0.2.0 
mbleigh (author)
Fri Mar 05 09:52:14 -0800 2010
commit  a026498fb732eeb8ad9bdb11bf28d21d8c0e3467
tree    8839bbd00c63648da72f899f9b8100491a475130
parent  2fa1c4707541e2673e6b28413603df89c44020f9
hashie /
name age
history
message
file .document Wed Sep 02 18:32:57 -0700 2009 Initial commit to hashie. [mbleigh]
file .gitignore Thu Nov 12 22:30:45 -0800 2009 Removes a debugging puts and updates the .gitig... [hassox]
file LICENSE Thu Nov 12 06:08:55 -0800 2009 Adding README [mbleigh]
file README.rdoc Fri Mar 05 09:51:58 -0800 2010 Adds Clash to the mix. [mbleigh]
file Rakefile Thu Nov 12 06:08:55 -0800 2009 Adding README [mbleigh]
file VERSION Fri Mar 05 09:52:14 -0800 2010 Version bump to 0.2.0 [mbleigh]
file hashie.gemspec Fri Mar 05 09:52:14 -0800 2010 Regenerated gemspec for version 0.2.0 [mbleigh]
directory lib/ Fri Mar 05 09:51:58 -0800 2010 Adds Clash to the mix. [mbleigh]
directory spec/ Fri Mar 05 09:51:58 -0800 2010 Adds Clash to the mix. [mbleigh]
README.rdoc

Hashie

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

Installation

Hashie is available as a RubyGem:

    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'

Clash

Clash is a Chainable Lazy Hash that allows you to easily construct complex hashes using method notation chaining. This will allow you to use a more action-oriented approach to building options hashes.

Essentially, a Clash is a generalized way to provide much of the same kind of "chainability" that libraries like Arel or Rails 2.x’s named_scopes provide.

Example

    c = Hashie::Clash.new
    c.where(:abc => 'def').order(:created_at)
    c # => {:where => {:abc => 'def}, :order => :created_at}

    # You can also use bang notation to chain into sub-hashes,
    # jumping back up the chain with _end!
    c = Hashie::Clash.new
    c.where!.abc('def').ghi(123)._end!.order(:created_at)
    c # => {:where => {:abc => 'def', :ghi => 123}, :order => :created_at}

    # Multiple hashes are merged automatically
    c = Hashie::Clash.new
    c.where(:abc => 'def').where(:hgi => 123)
    c # => {:where => {:abc => 'def', :hgi => 123}}

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 © 2009 Intridea, Inc (intridea.com/). See LICENSE for details.

Blog | Support | Training | Contact | API | Status | Twitter | Help | Security
© 2010 GitHub Inc. All rights reserved. | Terms of Service | Privacy Policy
Powered by the Dedicated Servers and
Cloud Computing of Rackspace Hosting®
Dedicated Server
ZW5kZW5yYWhheXU5QGdtYWlsLmNvbQ==