hash_conditions 0.1.15 → 0.1.16

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 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