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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODY4ZjJlNjdkMTcwMDkyNmQwNTVkYmM4OTBmYzVhMmE1OWVlZDFjNg==
4
+ OTY2ZDFkZWU4YWE1ZGRjMzU3M2EzODhkMzQ1ZWE4MGVkMTI2OWY4Ng==
5
5
  data.tar.gz: !binary |-
6
- ZGUxZjlhMjI5NWNlOWRlZTZmMjg0ZTRmYzE3NzU3ZGU3YTI0ZTQ5Mw==
6
+ NDhhNzVkZDE2ZTEzZjQyZDRmMTQyZGMwYWUxYmQwOTM0MmFkMjUwZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZTlmZDNlNWNmMGI0NDBkYjY5ZGQ0MDU2YzhmMDIwNjQ5NDhiMGQwMGFlZTdm
10
- Y2M0MjUxMWRiZjJmMzgyZGYwMmJjZTRkOTUwZmZkODQ2MjY5NDZhMDU2NTQ0
11
- MjM0ZDQ2M2M3YjNiM2NmZmJlOTliZTVlMjc5NmNhZGJkYTcyODM=
9
+ MTQ0NmMzMTc4NzMyNzQwODVkNDQ3ODQxNTY3ZjcwMGQyODk0NGU0NWVjMmQ2
10
+ MmRlODA1YmVlMjk2YzQ2OGFjMzgwZDk0ZjQ5ODVjYWZhYTNjNjZkOTI2MjQ3
11
+ N2Y1YWFhYzMzMDcwYzU1YWE3ZDE4YjQwMTlhZTkzNzUxNGMzNzk=
12
12
  data.tar.gz: !binary |-
13
- MGY1NWE3NmQ3YjhmYWNhYWZkZjJkNDVhN2UwMzBlNjkxY2I1OGY3N2IzMWM2
14
- Mjc5NTM4OWRjYjUwMjY2MDcwM2U4YjVmZWMyZDFkMTY1ZDY4OWZiZTRkMzM3
15
- NTA4NDY4OTNkYjNmNjRjZTJkZDc0OGZmZGY1MmNlY2Y1NDA5NzE=
13
+ NjZmN2ZjOTBjMGRmZjNlZDk0NjdhODg4OGJkZWYxM2JhZmM4ODI1YmQxN2E5
14
+ ZDc2N2JkMGI4ZDViMGQ1NTRkOWNkNDllNjEzZmRhNjgzOWZlOGM0M2RjYjgy
15
+ MjI2OGQxZGE4MjY5Y2NmNGRkMTdiNDMwZTc5YWVmNzc2OTNiNmM=
@@ -30,5 +30,4 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "bundler", "~> 1.7"
31
31
  spec.add_development_dependency "rake", "~> 10.0"
32
32
  spec.add_development_dependency "rspec"
33
- spec.add_development_dependency 'byebug'
34
33
  end
@@ -54,16 +54,17 @@ module HashConditions
54
54
  end
55
55
  end
56
56
 
57
- def self.get_key hash, key, options = {}
57
+ def self.eval_operand hash, key, options = {}
58
58
  __get_values = lambda do | values |
59
- values.map{ |x| get_key hash, x, options }
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
- re_type hash[key]
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 = get_key hash, expression[:key], options
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], get_key( hash, e[:key] )) + 1
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], get_key(hash, e[:key]) )
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], get_key(hash, e[:key]) )
135
- diff = get_diff( e[:value][1], get_key(hash, e[:key]) ) if Time.now + diff < Time.now
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
- key_uses_now? expression[:key]
164
+ operand_uses_now? expression[:key] or operand_uses_now? expression[:value]
162
165
  end
163
166
 
164
- def self.key_uses_now? key
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| key_uses_now? v }.any?
173
+ values.map{ |v| operand_uses_now? v }.any?
174
+ else
175
+ false
171
176
  end
172
177
  end
173
178
  end
@@ -1,3 +1,3 @@
1
1
  module HashConditions
2
- VERSION = "0.1.15"
2
+ VERSION = "0.1.16"
3
3
  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.15
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-06 00:00:00.000000000 Z
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