hash_params 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.
- checksums.yaml +4 -4
- data/README.md +9 -2
- data/lib/hash_params.rb +1 -10
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abdd09167a6fd3901a89dffde275cd74b5e5a826
|
4
|
+
data.tar.gz: 5b08703d583b1cbe23dd78a31f79394a237aebf4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e8d8e6e267c324e6dced4200cad1e4d5540cd0cd73f192f3b66a634c096a436a5d6afd100e7349f37c5442c40dc97ae2155f0cb31cbc4b2684fda6478086aa6
|
7
|
+
data.tar.gz: 4f1c4ea78c5a726d4d37401235941efa4a09f568301e84ab82396056b3bef8dd958d24e9621714405e81b435fe0018fd8cbd432f1c64702525d23b31c65bc917
|
data/README.md
CHANGED
@@ -26,6 +26,7 @@ describe HashParams do
|
|
26
26
|
some_string: 'this is a test string' ,
|
27
27
|
is_true: 'true',
|
28
28
|
is_false: 'f',
|
29
|
+
recursive: {}
|
29
30
|
}
|
30
31
|
) do
|
31
32
|
param :doesnt_exist, required: true
|
@@ -47,6 +48,10 @@ describe HashParams do
|
|
47
48
|
param :missing_with_validation, coerce: Integer, :default => 60 * 60, :validate => lambda { |v| v >= 60 * 60 }
|
48
49
|
param :is_true, coerce: :boolean
|
49
50
|
param :is_false, coerce: :boolean
|
51
|
+
#recursive
|
52
|
+
param :recursive do
|
53
|
+
param :wasnt_here_before, default: true
|
54
|
+
end
|
50
55
|
end
|
51
56
|
}
|
52
57
|
|
@@ -59,13 +64,16 @@ describe HashParams do
|
|
59
64
|
r[:renamed].must_equal :to_be_renamed
|
60
65
|
r[:integer_coercion].must_equal 1
|
61
66
|
r[:bad_number].must_equal 12.0
|
62
|
-
|
67
|
+
|
63
68
|
r[:array_with_delim].must_equal ["1", "2", "3"]
|
64
69
|
r[:hash_as_string].must_equal ({ "a" => "1", "b" => "2", "c" => "d" })
|
65
70
|
r[:missing_with_validation].must_equal 60 * 60
|
66
71
|
r[:is_true].must_equal true
|
67
72
|
r[:is_false].must_equal false
|
68
73
|
|
74
|
+
#recursive checking
|
75
|
+
r[:recursive][:wasnt_here_before].must_equal true
|
76
|
+
|
69
77
|
#failed items don't show up
|
70
78
|
r.errors.size.must_equal 2
|
71
79
|
r[:doesnt_exist].must_be_nil
|
@@ -86,7 +94,6 @@ describe HashParams do
|
|
86
94
|
|
87
95
|
end
|
88
96
|
|
89
|
-
|
90
97
|
```
|
91
98
|
|
92
99
|
|
data/lib/hash_params.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
class HashParams < Hash
|
2
|
-
VERSION = '0.0.
|
2
|
+
VERSION = '0.0.2'
|
3
3
|
attr :valid, :errors
|
4
4
|
|
5
|
-
def self.ping
|
6
|
-
'ping'
|
7
|
-
end
|
8
5
|
def initialize(opts={}, injection_target =nil, &code)
|
9
6
|
@incoming_hash = opts
|
10
7
|
@errors =[]
|
@@ -16,10 +13,6 @@ class HashParams < Hash
|
|
16
13
|
|
17
14
|
def param(key, h = {})
|
18
15
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
16
|
#What happens if value is FalseClass ? Need something a little better
|
24
17
|
val = @incoming_hash[key] || @incoming_hash[key.to_sym] || @incoming_hash[key.to_s]
|
25
18
|
if val.nil? && h[:default]
|
@@ -34,7 +27,6 @@ class HashParams < Hash
|
|
34
27
|
val = coerce(val, c, h)
|
35
28
|
end
|
36
29
|
|
37
|
-
|
38
30
|
#coersion could return a nil which won't validate, it could return a false which will attempt to validate
|
39
31
|
if validate!(val, h)
|
40
32
|
#The value is valid add it
|
@@ -153,5 +145,4 @@ class HashParams < Hash
|
|
153
145
|
return true if object.respond_to?(:empty) && object.empty
|
154
146
|
return false
|
155
147
|
end
|
156
|
-
|
157
148
|
end
|