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: