README.md in scoped_hash-0.1.0 vs README.md in scoped_hash-0.1.1

- old
+ new

@@ -1,17 +1,50 @@ # Scoped hash library It provides scoped view to a hash (mash) data structure. When the requested scope does not exist, it would fall back to the non-scope key. - require 'scoped_hash' - smash = ScopedHash.new( 'tax': { min: 20, max: 40}, - 'tax(democratic)': { min: 30, max: 50}, - 'tax(republican)': { min: 10, max: 30}) +```ruby +require 'scoped_hash' +smash = ScopedHash.new( 'tax': { min: 20, max: 40}, + 'tax(democratic)': { min: 30, max: 50}, + 'tax(republican)': { min: 10, max: 30}) - smash.scope('democratic')[:tax][:min] == 30 - smash.scope('republican')[:tax][:min] == 10 - smash.scope('green')[:tax][:min] == 20 +smash.scope('democratic')[:tax][:min] == 30 +smash.scope('republican')[:tax][:min] == 10 +smash.scope('green')[:tax][:min] == 20 +``` + +The best practice of this library is to create a YAML configuration file with scope annotation, for example the "config.yaml" could be: + +```yaml +tax: + min: 20 + max: 40 + max(green): 60 +tax(democratic): + min: 30 + max: 50 +tax(republican): + min: 10 + max: 30 +``` + +And the scoped access to the configuration could be as following: + +```ruby +require 'yaml' +require 'scoped_hash' + +config = ScopedHash.new(YAML.load_file('config.yml')) + +config.scope('democratic')[:tax][:min] == 30 +config.scope('republican')[:tax][:min] == 10 +config.scope('green')[:tax][:min] == 20 + +config[:tax][:max] == 40 +config.scope('green')[:tax][:max] == 60 +``` ## Installation Simply use gem to install this library: