zen_config 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +17 -16
- data/lib/zen_config/version.rb +1 -1
- data/lib/zen_config.rb +46 -37
- metadata +2 -2
data/README.md
CHANGED
|
@@ -22,10 +22,12 @@ Or install it yourself as:
|
|
|
22
22
|
|
|
23
23
|
Instantiate ZenConfig with a configuration hash :
|
|
24
24
|
|
|
25
|
-
config_hash = { :foo => "foo value" }
|
|
25
|
+
config_hash = { :foo => "foo value", :bar => { :baz => "baz value" } }
|
|
26
26
|
MyConfig = ZenConfig.new config_hash
|
|
27
27
|
MyConfig.foo
|
|
28
28
|
=> "foo value"
|
|
29
|
+
MyConfig.bar.baz
|
|
30
|
+
=> "baz value"
|
|
29
31
|
|
|
30
32
|
By default, ZenConfig is read only :
|
|
31
33
|
|
|
@@ -35,10 +37,21 @@ By default, ZenConfig is read only :
|
|
|
35
37
|
But changes can be allowed on build time :
|
|
36
38
|
|
|
37
39
|
MyConfig = ZenConfig.new config_hash, true
|
|
38
|
-
MyConfig.foo = "
|
|
39
|
-
=> "
|
|
40
|
+
MyConfig.foo = "new foo value"
|
|
41
|
+
=> "new foo value"
|
|
40
42
|
MyConfig.foo
|
|
41
|
-
=> "
|
|
43
|
+
=> "new foo value"
|
|
44
|
+
|
|
45
|
+
ZenConfigs can be converted to hashs :
|
|
46
|
+
|
|
47
|
+
MyConfig.to_hash
|
|
48
|
+
=> {:foo=>"new foo value", :bar=>{:baz=>"baz value"}}
|
|
49
|
+
|
|
50
|
+
Config keys can be deleted (if ZenConfig is unlocked) :
|
|
51
|
+
|
|
52
|
+
MyConfig.delete :bar
|
|
53
|
+
MyConfig.to_hash
|
|
54
|
+
=> {:foo=>"new foo value"}
|
|
42
55
|
|
|
43
56
|
Then the object can be locked to read only again :
|
|
44
57
|
|
|
@@ -88,17 +101,6 @@ Count keys :
|
|
|
88
101
|
MyConfig.bar.count
|
|
89
102
|
=> 1
|
|
90
103
|
|
|
91
|
-
ZenConfigs can be converted to hashs :
|
|
92
|
-
|
|
93
|
-
MyConfig.to_hash
|
|
94
|
-
=> {:foo=>"bar value", :bar=>{:baz=>"baz value"}}
|
|
95
|
-
|
|
96
|
-
And finally, config keys can be deleted (if ZenConfig is unlocked) :
|
|
97
|
-
|
|
98
|
-
MyConfig.delete :foo
|
|
99
|
-
MyConfig.to_hash
|
|
100
|
-
=> {:bar=>{:baz=>"baz value"}}
|
|
101
|
-
|
|
102
104
|
Note : ZenConfig methods are reserved words that can not be used as config keys.
|
|
103
105
|
They'll probably be renamed with a leading underscore in future versions.
|
|
104
106
|
|
|
@@ -112,5 +114,4 @@ They'll probably be renamed with a leading underscore in future versions.
|
|
|
112
114
|
|
|
113
115
|
## Known bugs
|
|
114
116
|
|
|
115
|
-
- Nested hashs raise an error on init
|
|
116
117
|
- Merging doesn't always work
|
data/lib/zen_config/version.rb
CHANGED
data/lib/zen_config.rb
CHANGED
|
@@ -8,27 +8,36 @@ class ZenConfig
|
|
|
8
8
|
def_delegators :@data, :each, :<<
|
|
9
9
|
|
|
10
10
|
def initialize hash, allow_modifications = false
|
|
11
|
-
@allow_modifications =
|
|
11
|
+
@allow_modifications = true
|
|
12
12
|
@loaded_section = nil
|
|
13
13
|
@index = 0
|
|
14
14
|
@data = {}
|
|
15
15
|
|
|
16
|
-
hash
|
|
17
|
-
key = key.to_sym
|
|
16
|
+
load_hash hash
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
else
|
|
22
|
-
@data[key] = value
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
set_key_parent key
|
|
18
|
+
if allow_modifications
|
|
19
|
+
read_only
|
|
26
20
|
end
|
|
21
|
+
end
|
|
27
22
|
|
|
28
|
-
|
|
23
|
+
# Keys
|
|
24
|
+
|
|
25
|
+
def count
|
|
26
|
+
@count
|
|
29
27
|
end
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
def delete key
|
|
30
|
+
if @allow_modifications
|
|
31
|
+
backup = @data[key]
|
|
32
|
+
@data.delete key
|
|
33
|
+
update_count
|
|
34
|
+
return backup
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def exists? key
|
|
39
|
+
@data.has_key? key
|
|
40
|
+
end
|
|
32
41
|
|
|
33
42
|
def get name, default = nil
|
|
34
43
|
result = default
|
|
@@ -40,6 +49,19 @@ class ZenConfig
|
|
|
40
49
|
return result
|
|
41
50
|
end
|
|
42
51
|
|
|
52
|
+
def new key, force = false
|
|
53
|
+
key = key.to_sym
|
|
54
|
+
|
|
55
|
+
if @allow_modifications
|
|
56
|
+
if (!exists? key) || force
|
|
57
|
+
@data[key] = ZenConfig.new({}, true)
|
|
58
|
+
set_key_parent key
|
|
59
|
+
else
|
|
60
|
+
raise "'#{key}' key already exists."
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
43
65
|
def set key, value
|
|
44
66
|
if @allow_modifications
|
|
45
67
|
if value.is_a? Hash
|
|
@@ -55,40 +77,27 @@ class ZenConfig
|
|
|
55
77
|
end
|
|
56
78
|
end
|
|
57
79
|
|
|
58
|
-
#
|
|
59
|
-
|
|
60
|
-
def count
|
|
61
|
-
@count
|
|
62
|
-
end
|
|
80
|
+
#Global
|
|
63
81
|
|
|
64
|
-
def
|
|
82
|
+
def load_hash hash
|
|
65
83
|
if @allow_modifications
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return backup
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def exists? key
|
|
74
|
-
@data.has_key? key
|
|
75
|
-
end
|
|
84
|
+
hash.each do |key, value|
|
|
85
|
+
puts key.to_s + " : " + value.to_s
|
|
86
|
+
key = key.to_sym
|
|
76
87
|
|
|
77
|
-
|
|
78
|
-
|
|
88
|
+
if value.is_a? Hash
|
|
89
|
+
@data[key] = ZenConfig.new value, @allow_modifications
|
|
90
|
+
else
|
|
91
|
+
@data[key] = value
|
|
92
|
+
end
|
|
79
93
|
|
|
80
|
-
if @allow_modifications
|
|
81
|
-
if (!exists? key) || force
|
|
82
|
-
@data[key] = ZenConfig.new({}, true)
|
|
83
94
|
set_key_parent key
|
|
84
|
-
else
|
|
85
|
-
raise "'#{key}' key already exists."
|
|
86
95
|
end
|
|
96
|
+
|
|
97
|
+
update_count
|
|
87
98
|
end
|
|
88
99
|
end
|
|
89
100
|
|
|
90
|
-
#Global
|
|
91
|
-
|
|
92
101
|
def merge merge
|
|
93
102
|
raise "Merged configuration must be a ZenConfig" unless merge.kind_of? ZenConfig
|
|
94
103
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zen_config
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-04-
|
|
12
|
+
date: 2012-04-10 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rspec
|