command_search 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b4c13708c7f272c5f640c224c98f16e4a3565b18b811a95f6828a32723df29c9
4
- data.tar.gz: 19e60779a228e284f9a5b554da53fc05c61e2e05a79df26d74302f322fe389de
3
+ metadata.gz: f2d4dc8f93128387f81a1db137c961877d7013fca4685708246313c631335844
4
+ data.tar.gz: 1febafa4673817a5b339283d417b280fe9823d7185aed8e3acdf4f634ec0691a
5
5
  SHA512:
6
- metadata.gz: 066a231e69284fd8c97526d39ec5f0648d35b447b304c7322d9b58d1f01748763f59d2c347575a6402837df1ba884ba92f4d14491c1fb378061c4a06a791f09c
7
- data.tar.gz: 906d147aec7b7fa2e6163b65f8fef0c1c98cc12ff39b5cdc166358029ff77f0080f57ba6612f8739ee5e07b5a7801f19f8ee963b55b5da8a77b7b21d0c02adca
6
+ metadata.gz: 61bf9662d85418432ec74454d501e37a64b15b3f1449e319628d2d262504e1c91809847281f6b85ac3812ceb6f59b496198b30b5a46ad6f9a564b50c7d31a0c6
7
+ data.tar.gz: 0a7c487210b398beb48e1a03d12d10bb8948849eeca87616a724d4a6ee993266bef0f9bed8f95b50448ab4b218f5995586277f1f83e0a31d816b2449d56c0379
@@ -24,6 +24,14 @@ module CommandSearch
24
24
  end
25
25
  elsif !item.key?(cmd)
26
26
  return false
27
+ elsif [Date, Time, DateTime].include?(cmd_type)
28
+ item_time = item[cmd].to_time
29
+ if cmd_search == cmd_search.to_i.to_s
30
+ Time.new(cmd_search) <= item_time && item_time < Time.new(cmd_search.to_i + 1)
31
+ else
32
+ input_times = Chronic.parse(cmd_search, { guess: nil })
33
+ input_times.first <= item_time && item_time < input_times.last
34
+ end
27
35
  elsif val[1][:type] == :quoted_str
28
36
  regex = /\b#{Regexp.escape(cmd_search)}\b/
29
37
  regex = /\A\Z/ if cmd_search == ''
@@ -48,8 +56,10 @@ module CommandSearch
48
56
  child_val = child[:value]
49
57
  item_val = item[child_val.to_s] || item[child_val.to_sym]
50
58
  item_val ||= child_val unless child == cmd
51
- return unless item_val
52
- if cmd_type == Time
59
+ next unless item_val
60
+ next item_val.to_time if child == cmd && [Date, Time, DateTime].include?(cmd_type)
61
+ next item_val if child == cmd
62
+ if [Date, Time, DateTime].include?(cmd_type)
53
63
  date_start_map = {
54
64
  '<' => :start,
55
65
  '>' => :end,
@@ -58,6 +68,9 @@ module CommandSearch
58
68
  }
59
69
  date_pick = date_start_map[node[:nest_op]]
60
70
  time_str = item_val.gsub(/[\._-]/, ' ')
71
+
72
+ next Time.new(time_str) if time_str == time_str.to_i.to_s
73
+
61
74
  date = Chronic.parse(time_str, { guess: nil })
62
75
  if date_pick == :start
63
76
  date.first
@@ -100,19 +100,26 @@ module CommandSearch
100
100
  else
101
101
  val = raw_val
102
102
  end
103
- elsif type == Time
103
+ elsif [Date, Time, DateTime].include?(type)
104
104
  time_str = raw_val.tr('_.-', ' ')
105
- date = Chronic.parse(time_str, guess: nil)
105
+ if time_str == time_str.to_i.to_s
106
+ date_begin = Time.new(time_str)
107
+ date_end = Time.new(time_str.to_i + 1).yesterday
108
+ else
109
+ date = Chronic.parse(time_str, guess: nil)
110
+ date_begin = date.begin
111
+ date_end = date.end
112
+ end
106
113
  if field_node[:negate]
107
114
  val = [
108
- { key => { '$gt' => date.end } },
109
- { key => { '$lt' => date.begin } }
115
+ { key => { '$gt' => date_end } },
116
+ { key => { '$lt' => date_begin } }
110
117
  ]
111
118
  key = '$or'
112
119
  else
113
120
  val = [
114
- { key => { '$gte' => date.begin } },
115
- { key => { '$lte' => date.end } }
121
+ { key => { '$gte' => date_begin } },
122
+ { key => { '$lte' => date_end } }
116
123
  ]
117
124
  key = '$and'
118
125
  end
@@ -177,7 +184,7 @@ module CommandSearch
177
184
  else
178
185
  val = val.to_f
179
186
  end
180
- elsif type == Time
187
+ elsif [Date, Time, DateTime].include?(type)
181
188
  # foo < day | day.start
182
189
  # foo <= day | day.end
183
190
  # foo > day | day.end
@@ -190,7 +197,13 @@ module CommandSearch
190
197
  }
191
198
  date_pick = date_start_map[op]
192
199
  time_str = val.tr('_.-', ' ')
193
- date = Chronic.parse(time_str, guess: nil)
200
+
201
+ if time_str == time_str.to_i.to_s
202
+ date = [Time.new(time_str), Time.new(time_str.to_i + 1).yesterday]
203
+ else
204
+ date = Chronic.parse(time_str, guess: nil)
205
+ end
206
+
194
207
  if date_pick == :start
195
208
  val = date.first
196
209
  elsif date_pick == :end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: command_search
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - zumbalogy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-11 00:00:00.000000000 Z
11
+ date: 2018-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chronic