hash_conditions 0.1.15 → 0.1.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/hash_conditions.gemspec +0 -1
- data/lib/hash_conditions/matcher.rb +17 -12
- data/lib/hash_conditions/version.rb +1 -1
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OTY2ZDFkZWU4YWE1ZGRjMzU3M2EzODhkMzQ1ZWE4MGVkMTI2OWY4Ng==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NDhhNzVkZDE2ZTEzZjQyZDRmMTQyZGMwYWUxYmQwOTM0MmFkMjUwZQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MTQ0NmMzMTc4NzMyNzQwODVkNDQ3ODQxNTY3ZjcwMGQyODk0NGU0NWVjMmQ2
|
10
|
+
MmRlODA1YmVlMjk2YzQ2OGFjMzgwZDk0ZjQ5ODVjYWZhYTNjNjZkOTI2MjQ3
|
11
|
+
N2Y1YWFhYzMzMDcwYzU1YWE3ZDE4YjQwMTlhZTkzNzUxNGMzNzk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NjZmN2ZjOTBjMGRmZjNlZDk0NjdhODg4OGJkZWYxM2JhZmM4ODI1YmQxN2E5
|
14
|
+
ZDc2N2JkMGI4ZDViMGQ1NTRkOWNkNDllNjEzZmRhNjgzOWZlOGM0M2RjYjgy
|
15
|
+
MjI2OGQxZGE4MjY5Y2NmNGRkMTdiNDMwZTc5YWVmNzc2OTNiNmM=
|
data/hash_conditions.gemspec
CHANGED
@@ -54,16 +54,17 @@ module HashConditions
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
-
def self.
|
57
|
+
def self.eval_operand hash, key, options = {}
|
58
58
|
__get_values = lambda do | values |
|
59
|
-
values.map{ |x|
|
59
|
+
values.map{ |x| eval_operand hash, x, options }
|
60
60
|
end
|
61
61
|
case key
|
62
62
|
when String, Symbol
|
63
63
|
if key.to_s == '$now'
|
64
64
|
options[:current_time] || Time.now
|
65
65
|
else
|
66
|
-
|
66
|
+
val = options[:is_key] ? hash[key] : key
|
67
|
+
re_type val
|
67
68
|
end
|
68
69
|
when Hash
|
69
70
|
op, values = key.to_a.first
|
@@ -80,12 +81,14 @@ module HashConditions
|
|
80
81
|
separator = values.shift
|
81
82
|
__get_values.call( values ).join( separator )
|
82
83
|
end
|
84
|
+
else
|
85
|
+
key
|
83
86
|
end
|
84
87
|
end
|
85
88
|
|
86
89
|
def self.match_single hash, expression, options
|
87
|
-
hash_value =
|
88
|
-
comparisson_value = expression[ :value ]
|
90
|
+
hash_value = eval_operand hash, expression[:key], options.merge(is_key: true)
|
91
|
+
comparisson_value = eval_operand hash, expression[ :value ], options
|
89
92
|
|
90
93
|
case expression[:operator]
|
91
94
|
when :==
|
@@ -127,12 +130,12 @@ module HashConditions
|
|
127
130
|
map{ | e |
|
128
131
|
case e[:operator]
|
129
132
|
when :<, :<=, :>, :>= then
|
130
|
-
diff = get_diff( e[:value],
|
133
|
+
diff = get_diff( eval_operand( hash, e[:value] ), eval_operand( hash, e[:key], is_key: true )) + 1
|
131
134
|
when :==, :!= then Time.now + s[:diff]
|
132
|
-
diff = get_diff( e[:value],
|
135
|
+
diff = get_diff( eval_operand( hash, e[:value] ), eval_operand(hash, e[:key]) )
|
133
136
|
when :between
|
134
|
-
diff = get_diff( e[:value][0],
|
135
|
-
diff = get_diff( e[:value][1],
|
137
|
+
diff = get_diff( eval_operand( hash, e[:value][0] ), eval_operand(hash, e[:key], is_key: true ) )
|
138
|
+
diff = get_diff( eval_operand( hash, e[:value][1] ), eval_operand(hash, e[:key], is_key: true ) ) if Time.now + diff < Time.now
|
136
139
|
end
|
137
140
|
|
138
141
|
Time.now + diff
|
@@ -158,16 +161,18 @@ module HashConditions
|
|
158
161
|
end
|
159
162
|
|
160
163
|
def self.uses_now? expression
|
161
|
-
|
164
|
+
operand_uses_now? expression[:key] or operand_uses_now? expression[:value]
|
162
165
|
end
|
163
166
|
|
164
|
-
def self.
|
167
|
+
def self.operand_uses_now? key
|
165
168
|
case key
|
166
169
|
when String, Symbol
|
167
170
|
key.to_s == '$now'
|
168
171
|
when Hash
|
169
172
|
op, values = key.to_a.first
|
170
|
-
values.map{ |v|
|
173
|
+
values.map{ |v| operand_uses_now? v }.any?
|
174
|
+
else
|
175
|
+
false
|
171
176
|
end
|
172
177
|
end
|
173
178
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hash_conditions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Giancarlo Palavicini
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: byebug
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ! '>='
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
55
|
description: ! ' Ability to parse and match hashes against Mongo-like querys '
|
70
56
|
email:
|
71
57
|
- kasthor@gmail.com
|