hashr 0.0.3 → 0.0.4
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/Gemfile.lock +1 -1
- data/lib/hashr/env_defaults.rb +11 -1
- data/lib/hashr/version.rb +1 -1
- data/test/hashr_test.rb +27 -7
- metadata +3 -3
data/Gemfile.lock
CHANGED
data/lib/hashr/env_defaults.rb
CHANGED
@@ -1,12 +1,22 @@
|
|
1
1
|
class Hashr < Hash
|
2
2
|
module EnvDefaults
|
3
|
+
attr_writer :env_namespace
|
4
|
+
|
5
|
+
def env_namespace=(env_namespace)
|
6
|
+
@env_namespace = [env_namespace.upcase]
|
7
|
+
end
|
8
|
+
|
9
|
+
def env_namespace
|
10
|
+
@env_namespace ||= []
|
11
|
+
end
|
12
|
+
|
3
13
|
def definition
|
4
14
|
deep_enverize(super)
|
5
15
|
end
|
6
16
|
|
7
17
|
protected
|
8
18
|
|
9
|
-
def deep_enverize(hash, nesting =
|
19
|
+
def deep_enverize(hash, nesting = env_namespace)
|
10
20
|
hash.each do |key, value|
|
11
21
|
nesting << key.to_s.upcase
|
12
22
|
hash[key] = case value
|
data/lib/hashr/version.rb
CHANGED
data/test/hashr_test.rb
CHANGED
@@ -36,16 +36,35 @@ class HashrTest < Test::Unit::TestCase
|
|
36
36
|
end
|
37
37
|
|
38
38
|
test 'defining defaults' do
|
39
|
-
klass = Class.new(Hashr)
|
40
|
-
|
39
|
+
klass = Class.new(Hashr) do
|
40
|
+
define :foo => 'foo', :bar => { :baz => 'baz' }
|
41
|
+
end
|
41
42
|
assert_equal 'foo', klass.new.foo
|
42
43
|
assert_equal 'baz', klass.new.bar.baz
|
43
44
|
end
|
44
45
|
|
46
|
+
test 'defining different defaults on different classes ' do
|
47
|
+
foo = Class.new(Hashr) { define :foo => 'foo' }
|
48
|
+
bar = Class.new(Hashr) { define :bar => 'bar' }
|
49
|
+
|
50
|
+
assert_equal 'foo', foo.definition[:foo]
|
51
|
+
assert_equal 'bar', bar.definition[:bar]
|
52
|
+
end
|
53
|
+
|
54
|
+
test 'defining different env_namespaces on different classes ' do
|
55
|
+
foo = Class.new(Hashr) {extend Hashr::EnvDefaults; self.env_namespace = 'foo' }
|
56
|
+
bar = Class.new(Hashr) {extend Hashr::EnvDefaults; self.env_namespace = 'bar' }
|
57
|
+
|
58
|
+
assert_equal ['FOO'], foo.env_namespace
|
59
|
+
assert_equal ['BAR'], bar.env_namespace
|
60
|
+
end
|
61
|
+
|
45
62
|
test 'defaults to env vars' do
|
46
|
-
klass = Class.new(Hashr)
|
47
|
-
|
48
|
-
|
63
|
+
klass = Class.new(Hashr) do
|
64
|
+
extend Hashr::EnvDefaults
|
65
|
+
self.env_namespace = 'worker'
|
66
|
+
define :foo => 'foo', :bar => { :baz => 'baz' }
|
67
|
+
end
|
49
68
|
|
50
69
|
ENV['WORKER_FOO'] = 'env foo'
|
51
70
|
ENV['WORKER_BAR_BAZ'] = 'env bar baz'
|
@@ -55,8 +74,9 @@ class HashrTest < Test::Unit::TestCase
|
|
55
74
|
end
|
56
75
|
|
57
76
|
test 'a key :_include includes the given modules' do
|
58
|
-
klass = Class.new(Hashr)
|
59
|
-
|
77
|
+
klass = Class.new(Hashr) do
|
78
|
+
define :foo => { :_include => Module.new { def helper; 'helper'; end } }
|
79
|
+
end
|
60
80
|
assert_equal 'helper', klass.new.foo.helper
|
61
81
|
end
|
62
82
|
end
|
metadata
CHANGED