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 +4 -4
- data/lib/command_search/memory.rb +15 -2
- data/lib/command_search/mongoer.rb +21 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2d4dc8f93128387f81a1db137c961877d7013fca4685708246313c631335844
|
4
|
+
data.tar.gz: 1febafa4673817a5b339283d417b280fe9823d7185aed8e3acdf4f634ec0691a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
52
|
-
if
|
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
|
103
|
+
elsif [Date, Time, DateTime].include?(type)
|
104
104
|
time_str = raw_val.tr('_.-', ' ')
|
105
|
-
|
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' =>
|
109
|
-
{ key => { '$lt' =>
|
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' =>
|
115
|
-
{ key => { '$lte' =>
|
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
|
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
|
-
|
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.
|
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
|
+
date: 2018-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chronic
|