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