Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
A lightweight Configuration gem built with Hashes
Ruby
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
spec
.gitignore
.rspec
CHANGELOG
Gemfile
Gemfile.lock
LICENSE
README.md
Rakefile
purple_hash.gemspec

README.md

Purple Hash is a configuration library for ruby that builds upon Ruby's core Hash. At it's core Purple allows you to access keys that do not exist yet by defining a default value proc which provides you with a new instance of a Purple Hash. Keys are also normalized to symbols, similar to how Rail's HashWithIndifferentAccess works.

require 'purple_hash'

config = PurpleHash.new
config[:db]['user'] = 'root'
config # => {:db => {:user => 'root'}}

config = PurpleHash.new(:db => {'user' => 'root'})
config # => {:db => {:user => 'root'}}

Because a PurpleHash is simply a sub-class of Hash you can do anything you would normally be able to without any hacks or tricks. A core extension of Hash is provided if you wish to use it, simply require core_ext/hash/purple_hash and call #to_purple_hash on any Ruby hash to get a PurpleHash back.

Note: If you try to change the default value on a PurpleHash a RuntimeError will be raised informing you that this is not allowed.

API

PurpleHash provides a very basic API on top of what Hash already provides.

#configure_from_hash(hash)

Takes a raw Hash and converts itself and any nested hashes to a PurpleHash. Used internally by #initialize

#freeze!

Locks the hash from any futher modifications. A PurpleHash::HashFrozen will be raised if the hash is frozen and you attempt to modify it. Keys that are not already defined will return nil instead of a new PurpleHash.

#frozen?

Find out if the hash is frozen.

Something went wrong with that request. Please try again.