event_nlp 0.2.7 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/event_nlp.rb +72 -42
- metadata +1 -1
- metadata.gz.sig +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3cd4994fbaf38dc524a289a4d4bf77041d40770
|
4
|
+
data.tar.gz: 8ee5abd06c78d59c9c0a55162ade03d48483001a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93fcbafdc9a7667c642c7c093748f46b7fffb842e5442b3be6c4404f55faae8221f6eb6e6e9b63bed20b5e00fe72a2e90e65e29a0e12c2f8288ee799ead6f603
|
7
|
+
data.tar.gz: 62e4f05a211799d7e198909a6cb5ee8851b9d178ba1a42fdf79f5c0e420f60b4244d58699d5d4081982f4913e777d423ed0ceaaa75026fe7ac359932b62fe13f
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/event_nlp.rb
CHANGED
@@ -59,13 +59,19 @@ class EventNlp
|
|
59
59
|
|
60
60
|
|
61
61
|
starting = /(?:\(?\s*starting (\d+\w{2} \w+\s*\w*)(?: until (.*))?\s*\))?/
|
62
|
-
|
63
|
-
months = (Date::MONTHNAMES[1..-1] + Date::ABBR_MONTHNAMES[1..-1])
|
64
|
-
|
65
|
-
|
62
|
+
weekdays = Date::DAYNAMES.join('|').downcase
|
63
|
+
months = (Date::MONTHNAMES[1..-1] + Date::ABBR_MONTHNAMES[1..-1])\
|
64
|
+
.join('|').downcase
|
65
|
+
times = /(?: *(?:at )?(\d+(?::\d+)?[ap]m) *)/
|
66
|
+
days = /\d+(?:st|nd|rd|th)/
|
67
|
+
|
68
|
+
#weekdays = Date::DAYNAMES.join('|').downcase
|
69
|
+
#
|
70
|
+
#times = /(?: *at )?\d[ap]m/
|
71
|
+
|
66
72
|
|
67
73
|
|
68
|
-
get /^(.*)\s+(every \d\w+ \w+#{
|
74
|
+
get /^(.*)\s+(every \d\w+ \w+#{times})\s*#{starting}/ do \
|
69
75
|
|title, recurring, time, raw_date, end_date|
|
70
76
|
|
71
77
|
input = params[:input].clone
|
@@ -125,10 +131,21 @@ class EventNlp
|
|
125
131
|
|
126
132
|
exp = ChronicCron.new(recurring).to_expression
|
127
133
|
|
128
|
-
|
134
|
+
raw_start_date = recurring[/(?<=starting )[^\)]+/]
|
135
|
+
|
136
|
+
|
137
|
+
if raw_start_date then
|
138
|
+
start_date = Chronic.parse(raw_start_date, now: @now - 1)
|
139
|
+
|
140
|
+
cf = CronFormat.new(exp, start_date - 1)
|
141
|
+
#cf.next until cf.to_time >= start_date
|
142
|
+
else
|
143
|
+
cf = CronFormat.new(exp, @now)
|
144
|
+
end
|
145
|
+
d = cf.to_time
|
129
146
|
|
130
147
|
puts [0.5, title, recurring, d].inspect if @debug
|
131
|
-
{title: title, recurring: recurring, date: d }
|
148
|
+
{title: title.rstrip, recurring: recurring, date: d }
|
132
149
|
|
133
150
|
end
|
134
151
|
|
@@ -143,7 +160,7 @@ class EventNlp
|
|
143
160
|
end
|
144
161
|
|
145
162
|
# hall 2 friday at 11am
|
146
|
-
get /(.*)\s+(#{
|
163
|
+
get /(.*)\s+(#{weekdays})\s+at\s+(.*)/i do |title, raw_day, time|
|
147
164
|
|
148
165
|
d = Chronic.parse(raw_day + ' ' + time)
|
149
166
|
|
@@ -165,7 +182,7 @@ class EventNlp
|
|
165
182
|
end
|
166
183
|
|
167
184
|
# friday hall 2 11am
|
168
|
-
get /^(#{
|
185
|
+
get /^(#{weekdays})\s+(.*)\s+(\d+(?::\d{2})?[ap]m)$/i do |raw_day, title, time|
|
169
186
|
|
170
187
|
d = Chronic.parse(raw_day + ' ' + time)
|
171
188
|
|
@@ -176,7 +193,7 @@ class EventNlp
|
|
176
193
|
|
177
194
|
|
178
195
|
# hall 2 at 11am
|
179
|
-
get /(.*)\s+at\s+(
|
196
|
+
get /(.*)\s+at\s+(#{times})/i do |title, time|
|
180
197
|
|
181
198
|
d = Chronic.parse(time)
|
182
199
|
|
@@ -185,34 +202,10 @@ class EventNlp
|
|
185
202
|
|
186
203
|
end
|
187
204
|
|
188
|
-
# hall 2 friday at 11am
|
189
|
-
# some important day 24th Mar
|
190
|
-
|
191
|
-
with_date = "(.*)\\s+(\\d\+\s*(?:st|nd|rd|th)?\\s+(?:#{months}))"
|
192
|
-
alt_pattern = '([^\d]+)\s+(\d+[^\*]+)(\*)?'
|
193
|
-
|
194
|
-
get /#{with_date}|#{alt_pattern}\s*(\*)$/i do |title, raw_date, annualar|
|
195
|
-
|
196
|
-
d = Chronic.parse(raw_date)
|
197
|
-
|
198
|
-
recurring = nil
|
199
|
-
|
200
|
-
if annualar then
|
201
|
-
|
202
|
-
recurring = 'yearly'
|
203
|
-
if d < @now then
|
204
|
-
d = Chronic.parse(raw_date, now: Time.local(@now.year + 1, 1, 1))
|
205
|
-
end
|
206
|
-
end
|
207
|
-
|
208
|
-
puts [2, title, raw_date].inspect if @debug
|
209
|
-
{ title: title, date: d, recurring: recurring }
|
210
|
-
end
|
211
|
-
|
212
205
|
# 27-Mar@1436 some important day
|
213
206
|
# 25/07/2017 11pm some important day
|
214
207
|
#
|
215
|
-
get
|
208
|
+
get /^(\d[^\s]+)\s*(\d+(?:\:\d+)?[ap]m)?\s+([^\*]+)(\*)?/ do |raw_date,
|
216
209
|
time, title, annualar|
|
217
210
|
|
218
211
|
d = Chronic.parse(raw_date + ' ' + time.to_s,
|
@@ -236,7 +229,7 @@ class EventNlp
|
|
236
229
|
# some event Wednesday 11am
|
237
230
|
|
238
231
|
relative_day = '|today|tomorrow|tonight'
|
239
|
-
get /^(.*)\s+((?:#{
|
232
|
+
get /^(.*)\s+((?:#{weekdays+relative_day})(?: \d{1,2}(?::\d{2})?[ap]m)?)/i \
|
240
233
|
do |title, raw_date|
|
241
234
|
|
242
235
|
d = Chronic.parse(raw_date)
|
@@ -246,12 +239,49 @@ class EventNlp
|
|
246
239
|
|
247
240
|
end
|
248
241
|
|
249
|
-
#
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
242
|
+
# Tuesday 3rd October gas service at Barbara's house morning 9am-1pm
|
243
|
+
|
244
|
+
get '*' do
|
245
|
+
|
246
|
+
s = params[:input]
|
247
|
+
|
248
|
+
time1, time2, month, weekday, day, end_date, annualar = nil, nil, nil,
|
249
|
+
nil, nil, nil, false
|
250
|
+
|
251
|
+
s2 = s.sub(/#{times}/i) {|x| time1 = x; ''}
|
252
|
+
s3 = s2.sub(/-(?=\d)/,'').sub(/#{times}/i) {|x| time2 = x; ''}
|
253
|
+
s4 = s3.sub(/ *#{weekdays} */i) {|x| weekday = x; ''}
|
254
|
+
s5 = s4.sub(/ *#{months} */i) {|x| month = x; ''}
|
255
|
+
s6 = s5.sub(/ *#{days} */i) {|x| day = x; ''}
|
256
|
+
s7 = s6.sub(/\*$/) {|x| annualar = true; ''}
|
257
|
+
title = s6
|
258
|
+
|
259
|
+
raw_date = [day, month].compact.join(' ')
|
260
|
+
raw_date = weekday if raw_date.empty?
|
261
|
+
|
262
|
+
d = Chronic.parse(raw_date + ' ' + time1.to_s,
|
263
|
+
:endian_precedence => :little, now: @now)
|
264
|
+
|
265
|
+
if time2 then
|
266
|
+
end_date = Chronic.parse(raw_date + ' ' + time2.to_s,
|
267
|
+
:endian_precedence => :little)
|
268
|
+
end
|
269
|
+
|
270
|
+
recurring = nil
|
271
|
+
|
272
|
+
if annualar then
|
273
|
+
|
274
|
+
recurring = 'yearly'
|
275
|
+
if d < @now then
|
276
|
+
d = Chronic.parse(raw_date, now: Time.local(@now.year + 1, 1, 1))
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
puts [5, title, raw_date, time1].inspect if @debug
|
281
|
+
{ title: title, date: d, end_date: end_date, recurring: recurring }
|
282
|
+
end
|
283
|
+
|
284
|
+
|
255
285
|
end
|
256
286
|
|
257
287
|
end
|
metadata
CHANGED
metadata.gz.sig
CHANGED
@@ -1,3 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
�*d�s�FxOµ��\�c҆z$���Zs�ceX�Z���l�+сN��l*ѷDܚDz�����f�Z�+�bxve���S�:�c�
|
1
|
+
��ji���+oK��P���fJr۳D$�&1��O�7+ڧ��@'�B�p0F���@��� <�4��K M���TYW��)�y=H�}8��v�=<���ꉨgoH4Ag)����D5�y�k�HMy�6<��h�%;{*/�b5�����9h��WL"�p}c.��
|
2
|
+
��GE��㴂�хn"�
|