event_nlp 0.3.1 → 0.4.0
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 +36 -17
- metadata +25 -26
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73cd65c68a6459b464bc21d5d91f925fdfb776c7
|
4
|
+
data.tar.gz: 524ccb60d5660fd2c99520e3915ab672519ea4e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5810a9e49803482d1b2ee43f9f03e45848b06fb20b4ded4e75303dfa2c7a955683b527bea1699d0d1f7bf054821ec9b5611a1f2fabfe7652ab03f73c1796143c
|
7
|
+
data.tar.gz: 6df966634ca2c75075a93df62f509e123db9b7c79234cebe5379d98ce73965775bfc04d6715fd46519aa38a69c4bc6ec11e3286232207096e79dac42198be714
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/event_nlp.rb
CHANGED
@@ -52,12 +52,13 @@ class EventNlp
|
|
52
52
|
def expressions(params)
|
53
53
|
|
54
54
|
starting = /(?:\(?\s*starting (\d+\w{2} \w+\s*\w*)(?: until (.*))?\s*\))?/
|
55
|
-
|
56
|
-
|
57
|
-
|
55
|
+
weekdays2 = Date::DAYNAMES.join('|').downcase
|
56
|
+
weekdays = "(%s)" % weekdays2
|
57
|
+
months = "(%s)" % (Date::MONTHNAMES[1..-1] + Date::ABBR_MONTHNAMES[1..-1])\
|
58
|
+
.join('|').downcase
|
58
59
|
times = /(?: *(?:at |@ |from )?(\d+(?::\d+)?(?:[ap]m|\b)) *)/
|
59
60
|
times2 = /\d+(?::\d+)?[ap]m-\d+(?::\d+)?[ap]m|\d+(?::\d+)?-\d+(?::\d+)?/
|
60
|
-
days =
|
61
|
+
days = /(\d+(?:st|nd|rd|th))/
|
61
62
|
periods = /day|week|month/
|
62
63
|
|
63
64
|
#weekdays = Date::DAYNAMES.join('|').downcase
|
@@ -187,7 +188,8 @@ class EventNlp
|
|
187
188
|
end
|
188
189
|
|
189
190
|
puts [0.5, title, recurring, d].inspect if @debug
|
190
|
-
{input: input, title: title.rstrip, recurring: recurring,
|
191
|
+
{input: input, title: title.rstrip, recurring: recurring,
|
192
|
+
date: d, end_date: end_date }
|
191
193
|
|
192
194
|
end
|
193
195
|
|
@@ -203,7 +205,8 @@ class EventNlp
|
|
203
205
|
|
204
206
|
|
205
207
|
# 7th Oct Euston Station (meet at Timothy's house at 7pm)
|
206
|
-
get /^(\d(?:st|nd|rd|th) \w+) *(.*)\s+at\s+(\w+)/i do
|
208
|
+
get /^(\d(?:st|nd|rd|th) \w+) *(.*)\s+at\s+(\w+)/i do \
|
209
|
+
|raw_day, title, time|
|
207
210
|
|
208
211
|
d = Chronic.parse(raw_day + ' ' + time)
|
209
212
|
|
@@ -216,7 +219,7 @@ class EventNlp
|
|
216
219
|
# some event Wednesday 11am
|
217
220
|
|
218
221
|
relative_day = '|today|tomorrow|tonight'
|
219
|
-
get /^(.*)\s+(#{
|
222
|
+
get /^(.*)\s+(#{weekdays2+relative_day})(?: \(([^\)]+)\)) (at \d{1,2}(?::\d{2})?(?:[ap]m)?)/i \
|
220
223
|
do |title, raw_date, date2, time2|
|
221
224
|
puts 'time2: ' + time2.inspect if @debug
|
222
225
|
puts 'date2: ' + date2 if @debug
|
@@ -234,7 +237,8 @@ class EventNlp
|
|
234
237
|
end
|
235
238
|
|
236
239
|
# Group meeting Red Hall 2pm-4pm on Monday (4th Dec 2017)
|
237
|
-
get /^(.*)\s+(#{times2})(?: on)
|
240
|
+
get /^(.*)\s+(#{times2})(?: on) +#{weekdays}(?: \(([^\)]+)\))?/i \
|
241
|
+
do |title, xtimes, raw_day, actual_date|
|
238
242
|
|
239
243
|
puts 'actual_date: ' + actual_date.inspect if @debug
|
240
244
|
puts 'raw_day: ' + raw_day.inspect if @debug
|
@@ -246,7 +250,8 @@ class EventNlp
|
|
246
250
|
d = Chronic.parse actual_date
|
247
251
|
else
|
248
252
|
d = Chronic.parse(raw_day)
|
249
|
-
input.sub!(/#{weekdays}/i
|
253
|
+
input.sub!(/#{weekdays}/i,
|
254
|
+
%Q(#{raw_day} (#{d.strftime("#{d.day.ordinal} %b %Y")})))
|
250
255
|
end
|
251
256
|
|
252
257
|
t1, t2 = xtimes.split(/-/,2)
|
@@ -263,7 +268,8 @@ class EventNlp
|
|
263
268
|
|
264
269
|
# hall 2 friday at 11am
|
265
270
|
|
266
|
-
get /^(.*)\s
|
271
|
+
get /^(.*)\s+#{weekdays}(?: \(([^\)]+)\))?(#{times})?/i \
|
272
|
+
do |title, raw_day, actual_date, time|
|
267
273
|
|
268
274
|
puts 'actual_date: ' + actual_date.inspect if @debug
|
269
275
|
puts 'raw_day: ' + raw_day.inspect if @debug
|
@@ -275,7 +281,8 @@ class EventNlp
|
|
275
281
|
d = Chronic.parse(raw_day + ' ' + time.to_s)
|
276
282
|
else
|
277
283
|
d = Chronic.parse(raw_day + ' ' + time.to_s)
|
278
|
-
input.sub!(/#{weekdays}/i
|
284
|
+
input.sub!(/#{weekdays}/i,
|
285
|
+
%Q(#{raw_day} (#{d.strftime("#{d.day.ordinal} %b %Y")})))
|
279
286
|
end
|
280
287
|
|
281
288
|
puts 'd: ' + d.inspect if @debug
|
@@ -301,7 +308,8 @@ class EventNlp
|
|
301
308
|
end
|
302
309
|
|
303
310
|
# friday hall 2 11am
|
304
|
-
get
|
311
|
+
get /^#{weekdays}\s+(.*)\s+(\d+(?::\d{2})?[ap]m)$/i do \
|
312
|
+
|raw_day, title, time|
|
305
313
|
|
306
314
|
d = Chronic.parse(raw_day + ' ' + time)
|
307
315
|
|
@@ -309,7 +317,17 @@ class EventNlp
|
|
309
317
|
{ title: title, date: d }
|
310
318
|
|
311
319
|
end
|
312
|
-
|
320
|
+
|
321
|
+
# Tuesday 10th July hall 2 at 11am
|
322
|
+
get /#{weekdays}\s+#{days}\s+#{months}\s+(?:at )?(.*)\s+at\s+(#{times})/i \
|
323
|
+
do |wday, day, month, title, time|
|
324
|
+
|
325
|
+
d = Chronic.parse([day, month, time].join(' '))
|
326
|
+
|
327
|
+
puts ['1.44.5', day, month, title].inspect if @debug
|
328
|
+
{ title: title, date: d }
|
329
|
+
|
330
|
+
end
|
313
331
|
|
314
332
|
# hall 2 at 11am
|
315
333
|
get /(.*)\s+at\s+(#{times})/i do |title, time|
|
@@ -325,8 +343,8 @@ class EventNlp
|
|
325
343
|
# 27-Mar@1436 some important day
|
326
344
|
# 25/07/2017 11pm some important day
|
327
345
|
#
|
328
|
-
get /^(\d+\/\d+\/\d+)\s*(\d+(?:\:\d+)?[ap]m)?\s+([^\*]+)(\*)?/
|
329
|
-
time, title, annualar|
|
346
|
+
get /^(\d+\/\d+\/\d+)\s*(\d+(?:\:\d+)?[ap]m)?\s+([^\*]+)(\*)?/ \
|
347
|
+
do |raw_date, time, title, annualar|
|
330
348
|
|
331
349
|
d = Chronic.parse(raw_date + ' ' + time.to_s,
|
332
350
|
:endian_precedence => :little)
|
@@ -349,7 +367,8 @@ class EventNlp
|
|
349
367
|
|
350
368
|
# Some event (10 Woodhouse Lane) 30th Nov from 9:15-17:00
|
351
369
|
|
352
|
-
get /^(.*)
|
370
|
+
get /^(.*) #{days} #{months}(?: from)? (#{times2})/i do \
|
371
|
+
|title, day, month, xtimes|
|
353
372
|
|
354
373
|
t1, t2 = xtimes.split(/-/,2)
|
355
374
|
|
@@ -407,4 +426,4 @@ class EventNlp
|
|
407
426
|
|
408
427
|
end
|
409
428
|
|
410
|
-
end
|
429
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: event_nlp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -10,28 +10,27 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
/
|
31
|
-
|
32
|
-
kbRihMTezaC+4A==
|
13
|
+
MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwNzA1MTAxNjMyWhcN
|
15
|
+
MTkwNzA1MTAxNjMyWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVsMUO
|
17
|
+
uqAIaefnFUYjL01BM0IKcynSiGaen10C1l+mdb5L2u/qqmDlei+dhkROzdalv3I9
|
18
|
+
mzfM+gmypIghj96WuiJWFN0W3ktFvxo/GBt9H5va9e8osXAzIuMmU6XcPNHRJJ8a
|
19
|
+
l+++HBSeBylV0JGH3h+4Ia5fF8rsnUnhXnethMO4bEjERFVH8PO6qDnL28ua3r05
|
20
|
+
W964deP/xkSD2JCc9UEzmfa6+vXpT8EM00TEFsC0KWLC1tbNqQHknxW/JGFsvSrm
|
21
|
+
rtjUzYRg4D2JzBAvkofjPWhDcDwUg9HjEslqg0k4jzk8d7bCihmRDaeNLpmjFVeu
|
22
|
+
miMJkFxdCkRbFxkrAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
23
|
+
HQYDVR0OBBYEFD6Oql0vDFt0//hJu95Y7ai3GlpdMCYGA1UdEQQfMB2BG2dlbW1h
|
24
|
+
c3RlckBqYW1lc3JvYmVydHNvbi5ldTAmBgNVHRIEHzAdgRtnZW1tYXN0ZXJAamFt
|
25
|
+
ZXNyb2JlcnRzb24uZXUwDQYJKoZIhvcNAQEFBQADggEBAEVbqAk47S/3aPeR4B7G
|
26
|
+
l875ptDSNkXUq0Y6/c7HLtCqO8J9WPGbNUoGT3EeYQblEcay816mbd3TLOgTdmo/
|
27
|
+
vJphzqk0LEHBYD2oC1G7Yzzq7BHkkoJN54e6b5ZzUHNctIGluMrjnNvIagHKfJlR
|
28
|
+
UAX6I2o4wL8qFLDxkEcv8FRc67xJBMdQljoYHO+mM8uz8Lsk5Go0xI6UvIZvAnXh
|
29
|
+
fJkRwzhE/iZ3kywtmmOnZthaWgHjUoY7bl8lyroUeFf1f3f1tNUKk7kfClyRVrka
|
30
|
+
hfzP67fp+s/TI6Tk+IvaEWBcfX7AV2XjfhS+q3uCBvQRjmbbRg3JO4XdjAQI3q8d
|
31
|
+
+P4=
|
33
32
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
33
|
+
date: 2018-07-05 00:00:00.000000000 Z
|
35
34
|
dependencies:
|
36
35
|
- !ruby/object:Gem::Dependency
|
37
36
|
name: chronic_cron
|
@@ -39,20 +38,20 @@ dependencies:
|
|
39
38
|
requirements:
|
40
39
|
- - "~>"
|
41
40
|
- !ruby/object:Gem::Version
|
42
|
-
version: '0.
|
41
|
+
version: '0.4'
|
43
42
|
- - ">="
|
44
43
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0.
|
44
|
+
version: 0.4.0
|
46
45
|
type: :runtime
|
47
46
|
prerelease: false
|
48
47
|
version_requirements: !ruby/object:Gem::Requirement
|
49
48
|
requirements:
|
50
49
|
- - "~>"
|
51
50
|
- !ruby/object:Gem::Version
|
52
|
-
version: '0.
|
51
|
+
version: '0.4'
|
53
52
|
- - ">="
|
54
53
|
- !ruby/object:Gem::Version
|
55
|
-
version: 0.
|
54
|
+
version: 0.4.0
|
56
55
|
- !ruby/object:Gem::Dependency
|
57
56
|
name: app-routes
|
58
57
|
requirement: !ruby/object:Gem::Requirement
|
metadata.gz.sig
CHANGED
Binary file
|