hash_conditions 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/hash_conditions/core.rb +18 -1
- data/lib/hash_conditions/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YTIwY2E0OGRlZGU5NzE1YTI2MmFjZDI1OGMxZTFlZDhmOTYzZTExOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NmU2NDQ4M2E3ZmFlNGRkNDZiMjdmNzgyZTYwNzE4ODMxNjM2ODRkMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZDQxNWRkOTNiNTNkZDFkMzZhNzIwZTkyYjI3YWZhNzE3NTA1OTUyMDZkOTk4
|
10
|
+
ZjQ0Zjc2NTI5YjRkMGY2Zjk5MjQyNjdjNmMwYzFlOTg4NzhmODg4NDJhZDJi
|
11
|
+
ZjRjZWM2NjJlYTkzMzc2NDE4NDlkNDQ1N2I4MGM3YmQwYjdkOGY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
N2NmMWE0YjdjNTYwZGMxYTU0ZDBhY2E1OGZhOTRhNjY4YmZkMTQ1MTZiNDRk
|
14
|
+
NjgxZmEwYjhiNDA3OTFlODFkZmI1MjFiMWZjNDVjMmMyNmE3YWJmOWZiMjU1
|
15
|
+
ZTVmMWJkNjZhMDUyMWEzMjdlOTRjMmMzNGM4YWZlMmNmYmE3MWU=
|
data/lib/hash_conditions/core.rb
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
module HashConditions
|
2
|
+
class KeyNotFound < Exception; end
|
3
|
+
class UnexpectedExpression < Exception; end
|
4
|
+
class InvalidExpression < Exception; end
|
5
|
+
|
2
6
|
module Core
|
3
7
|
# Modular Matchers
|
4
8
|
DEBUG=false
|
@@ -143,6 +147,19 @@ module HashConditions
|
|
143
147
|
end
|
144
148
|
end
|
145
149
|
|
150
|
+
def get_key hash, key
|
151
|
+
if hash.has_key? key
|
152
|
+
hash[ key ]
|
153
|
+
else
|
154
|
+
key_type = key.class
|
155
|
+
key.to_s.split('.').inject(hash) do |ret, k|
|
156
|
+
typed_key = key_type == Symbol ? k.to_sym : k
|
157
|
+
raise KeyNotFound, "key #{key} not found" unless ret.has_key? typed_key
|
158
|
+
ret = ret[ typed_key ]
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
146
163
|
def eval_operand hash, key, options = {}
|
147
164
|
__get_values = lambda do | values |
|
148
165
|
values.map{ |x| eval_operand hash, x, options }
|
@@ -152,7 +169,7 @@ module HashConditions
|
|
152
169
|
if key.to_s == '$now'
|
153
170
|
options[:current_time] || Time.now
|
154
171
|
else
|
155
|
-
val = options[:is_key] ? hash
|
172
|
+
val = options[:is_key] ? get_key( hash, key ) : key
|
156
173
|
re_type val
|
157
174
|
end
|
158
175
|
when Array
|