command_search 0.6.0 → 0.7.0

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