README.md in strada-0.0.3 vs README.md in strada-0.0.4
- old
+ new
@@ -1,59 +1,76 @@
# Strada
-Configuration library for ruby with YAML/JSON/TOML backends with unified object
-access
+Configuration library for ruby with YAML/JSON/TOML backends with unified object access
+
## Install
+
+```shell
+ % gem install strada
```
- % gem install Strada
-```
## Use
+
### Simple
-```
-require 'Strada'
+
+```ruby
+require 'strada'
+require 'pp'
cfg = Strada.cfg
+# print cfg datastructure
+PP.pp cfg
+
port = cfg.server.port
user = cfg.auth.user
pw = cfg.auth.password
+
+PP.pp cfg
```
+
It tried to detect your software name via caller_locations if no ':name'
argument was given.
It automatically loads /etc/name/config and ~/.config/name/config and merges
them together.
### Advanced
-```
-require 'Strada'
+
+```ruby
+require 'strada'
+
Strada = Strada.new name: 'mykewlapp',
- default: {'poop'=>'xyzzy'},
+ default: { 'poop' => 'xyzzy' },
adapter: 'yaml',
usrdir: '/home/app/config/',
sysdir: '/System/config/',
load: false
-Strada.default.poop2 = [1, 2, 3, 4]
+
+Strada.default.poop2 = [1, 2, 3, 4]
Strada.default.starship.poopers = 42
Strada.load :user
+
if Strada.user.empty?
Strada.user = Strada.default
Strada.save :user
end
-Strada.load # load+merges cfg, takes argument :default, :system, :user
-Strada.cfg # merged default + system + user (merged on load)
+
+Strada.load # load+merges cfg, takes argument :default, :system, :user
+Strada.cfg # merged default + system + user (merged on load)
Strada.default # default only
-Strada.system # system only
-Strada.user # user only
+Strada.system # system only
+Strada.user # user only
```
## Reserved methods
-* each - iterate all config keys in current level
+* each - iterate all config keys in current level
* has_key?(arg) - check if current level has key arg
* [arg] - fetch arg (useful for non-literal retrieval, instead of using #send)
-* key? - all keys have question mark version reserved, checks if key exists+true (true), exists+false (false), not-exists (nil)
+* key? - all keys have question mark version reserved, checks if key exists+true (true), exists+false (false),
+ not-exists (nil)
+
+ all object class methods
## TODO
- * should I add feature to raise on unconfigured/unset?
- * should I always merge to 'cfg' when default/system/config is set?
+* should I add feature to raise on unconfigured/unset?
+* should I always merge to 'cfg' when default/system/config is set?