event_nlp 0.6.6 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a841e6980bb14291c3a224491b761e57f6966260c3b11e6e8a78eb121c37220b
4
- data.tar.gz: 9d7686cde4d18d14bfb9b35d29ae2a268423c396c4decb6a5bf4c8e9541df8a1
3
+ metadata.gz: 8cdc8db5361075d76541559dda4b9541afbef4af1f530fb1076d1a2e73b2bb2a
4
+ data.tar.gz: ab4558673af5119af70185d2b19f75d4d8757cd4afec2d0b5495935b4ce8d26b
5
5
  SHA512:
6
- metadata.gz: a000f3bcffe7f4388a75e3aab7de09fa6f01bf63bf673c3c6faca9a041603dd2ccd21af608008493d8f2c6c3b9547bc6aad7e45b79ef882740f195ddd8b0b2c1
7
- data.tar.gz: ac5744ba228a291483b2bf52a2688d07d3516d46ca951edf982fa5e4ca8fde6e7cb53647d723f5067c807a03a765bf5d2a93ad0e901962b6c2283ecc6c490b11
6
+ metadata.gz: a72a9209568969b91a85cb019440d8704ba34a6e5b3cf531353c60106f18fdbd4715d0beb5cd1f10023e1e379698631377287fca70471af25a5b9c2c7c7e3ce4
7
+ data.tar.gz: 5f581d752bd427cc347cde61e5776be7c47ac7f19440c2609d1721688af7d1f8aeebd8df0e5c8be88cdcf82a3f9b367680de2972ada5ea9e0bcb38a801e41734
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/event_nlp.rb CHANGED
@@ -2,10 +2,18 @@
2
2
 
3
3
  # file: event_nlp.rb
4
4
 
5
- require 'chronic_cron'
5
+
6
+ #require 'chronic_cron'
6
7
  require 'ostruct'
7
- require 'app-routes'
8
+ require 'requestor'
9
+
10
+ code = Requestor.read('http://a0.jamesrobertson.me.uk/rorb/r/ruby') do |x|
11
+ x.require 'app-routes'
12
+ x.require 'chronic_cron'
13
+ end
8
14
 
15
+ eval code
16
+ #require 'app-routes'
9
17
 
10
18
  module Ordinals
11
19
 
@@ -53,7 +61,7 @@ class EventNlp
53
61
 
54
62
  # returns an Array object of dates, projected from a recurring event
55
63
  #
56
- def project(s, year: Time.now.year)
64
+ def project(s, year: @now.year)
57
65
 
58
66
  r0 = parse s
59
67
  r = parse r0.input
@@ -67,18 +75,19 @@ class EventNlp
67
75
  EventNlp.new(r.date+1).parse(r.input).date.inspect
68
76
  end
69
77
 
70
- return [r.date] if (r.date == EventNlp.new(r.date+1).parse(r.input).date)
78
+ return [r.date] if (r.date == EventNlp.new(r.date+1, debug: @debug).parse(r.input).date)
71
79
 
72
80
  while r.date.year == year.to_i do
73
81
 
74
82
  dates << r.date
75
83
  @now = if r.recurring == 'month' then
76
- (r.date.to_datetime >> 1).to_time
84
+ (r.date.to_date >> 1).to_time
77
85
  #elsif r.recurring == 'weekly'
78
86
 
79
87
  else
80
88
  r.date + 1
81
89
  end
90
+ puts '@now: ' + @now.inspect if @debug
82
91
  #@now = r.date + 1
83
92
  r = parse(r.input)
84
93
 
@@ -107,6 +116,18 @@ class EventNlp
107
116
  s = raws.sub(pattern, s2)
108
117
  end
109
118
 
119
+ months = (Date::MONTHNAMES + Date::ABBR_MONTHNAMES).join('|').downcase
120
+
121
+ # the following would be ambiguous input, but we will assume they
122
+ # meant the 14th day of every month
123
+ # e.g. "Cafe meeting 14th May Monthly"
124
+ found = raws.match(/(?<title>.*)\s+(?<day>\w+(?:st|nd|rd|th)) (#{months}) monthly/i)
125
+
126
+ if found then
127
+ s = "%s on the %s of every month" % [found[:title],
128
+ found[:day].to_i.ordinal]
129
+ end
130
+
110
131
  # e.g. "Cafe meeting 14th Monthly" =>
111
132
  # Cafe meeting on the 14th of every month
112
133
  #
@@ -137,6 +158,8 @@ class EventNlp
137
158
  weekdays = "(%s)" % weekdays2
138
159
  months = "(%s)" % (Date::MONTHNAMES[1..-1] + Date::ABBR_MONTHNAMES[1..-1])\
139
160
  .join('|').downcase
161
+ years = /(20[0-9]{2})/
162
+
140
163
  times = /(?: *(?:at |@ |from )?(\d+(?::\d+)?(?:[ap]m|\b)) *)/
141
164
  times2 = /\d+(?::\d+)?[ap]m-\d+(?::\d+)?[ap]m|\d+(?::\d+)?-\d+(?::\d+)?/
142
165
  times3 = /(\d+(?::\d+)?[ap]m-\d+(?::\d+)?[ap]m|\d+(?::\d+)?-\d+(?::\d+)?)/
@@ -523,12 +546,40 @@ class EventNlp
523
546
  { title: title, date: d1 }
524
547
  end
525
548
 
549
+ # Some event (10 Woodhouse Lane) 30th Nov at 9:15-10:00
550
+
551
+ get /^(.*) #{days} #{months} #{years}(?: at)? (#{times2})/i do \
552
+ |title, day, month, years, xtimes|
553
+
554
+ t1, t2 = xtimes.split(/-/,2)
555
+ puts '[title, years, day, month, t1] ' + [title, years, day, month, t1].inspect if @debug
556
+ d1 = Chronic.parse([month, day, years, t1].join(' '), now: @now)
557
+ d2 = Chronic.parse([month, day, years, t2].join(' '), now: @now)
558
+
559
+ puts [4.655, title, d1].inspect.debug if @debug
560
+
561
+ { title: title.sub(/ on$/,''), date: d1, end_date: d2 }
562
+ end
563
+
564
+ # Some event (10 Woodhouse Lane) 30th Nov at 9:15
565
+
566
+ get /^(.*) #{days} #{months} #{years}(?: at)? (#{times})/i do \
567
+ |title, day, month, years, t1|
568
+
569
+ puts '[title, years, day, month, t1] ' + [title, years, day, month, t1].inspect if @debug
570
+ d1 = Chronic.parse([month, day, years, t1].join(' '), now: @now)
571
+
572
+ puts [4.66, title, d1].inspect.debug if @debug
573
+
574
+ { title: title.sub(/ on$/,''), date: d1 }
575
+ end
576
+
526
577
  # Some event (10 Woodhouse Lane) 30th Nov at 9:15-
527
578
 
528
579
  get /^(.*) #{days} #{months}(?: at)? (#{times})/i do \
529
580
  |title, day, month, t1|
530
581
 
531
-
582
+ puts '[title, day, month, t1] ' + [title, day, month, t1].inspect if @debug
532
583
  d1 = Chronic.parse([month, day, t1].join(' '), now: @now)
533
584
 
534
585
  puts [4.7, title, d1].inspect.debug if @debug
data.tar.gz.sig CHANGED
Binary file
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.6.6
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,7 +35,7 @@ cert_chain:
35
35
  w8lJ+I6Lqqr5GpsweOnEHW4w200sMRD40u8qmGHrqirihL2KrwTD6A9UObvA5AxZ
36
36
  4Z4EPvKg+3jsK9Gv3GGSLdrD
37
37
  -----END CERTIFICATE-----
38
- date: 2022-04-03 00:00:00.000000000 Z
38
+ date: 2022-08-10 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: chronic_cron
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  requirements: []
106
- rubygems_version: 3.2.22
106
+ rubygems_version: 3.3.7
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: 'Parses a calendar event for date, time, and description e.g. hall 2 friday
metadata.gz.sig CHANGED
Binary file