lita-reminder 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f1c845e64fefcdcdf36a771173bc84ba69d8a07
4
- data.tar.gz: 30e7b7133f4880f04a4be2eeebaf1a1e75efe645
3
+ metadata.gz: 1416912c50f4884287365f915763b3953fc738c6
4
+ data.tar.gz: 64008f920b6e526a2d9951610fc2538e95086a95
5
5
  SHA512:
6
- metadata.gz: 2b37246013b7a636e8d5ecbe58efdde24b281b615159b28c77042ba2bddee0674476108a29793f66f171f0ceb620572aea8abeae8222826cafcd40e77c680e9b
7
- data.tar.gz: 15e2ff3b315d3735ea9f808facb2480acdb27f4bbdedeba23423e7528620cf489334cbb800e3386714460d7bf30d670f0dfcf1ea8e7f6b7ba930574abf92d452
6
+ metadata.gz: 78a1b5109cbd2532b5cbd17692269660154d5309a6a0788532278ce38704d3ec427efefb5a4bc752d883a821c1d8b9c9d48965022bcfc4178df376c9c53554d5
7
+ data.tar.gz: 01642925d74ba84d329237c4aeb05a0ee9c50741c109f2068e27055d5da2abdaca786b038c34e9f3c350bcc9267749d5136ac0acf5a1b45e8aab6eae19cb2209
@@ -12,7 +12,7 @@ module Lita
12
12
  @@mutex = Mutex.new
13
13
  @@runner = ReminderRunner.new
14
14
 
15
- route(/^remind\s+(?<who>\S+)\s+(?<type>at|in|every|cron)\s+(?<time>.*)(\s+first\s+at\s+(?<first>.*))?\s+to\s+(?<task>.*?)(\s+repeat\s+(?<repeat>.*)\s+times\s+(?<repeat_interval>.*))?$/, :add,
15
+ route(/^remind\s+(?<who>.*?)\s+(?<type>at|in|every|cron)\s+(?<time>.*)(\s+first\s+at\s+(?<first>.*))?\s+to\s+(?<task>.*?)(\s+repeat\s+(?<repeat>.*)\s+times\s+(?<repeat_interval>.*))?$/, :add,
16
16
  help: {"remind (me|here|username|room) (at|in|every|cron) TIME [first at TIME] to TASK [repeat 3|many times 10m]" => "Add a reminder"})
17
17
  route(/^reminder\s+done\s+(\d+)$/, :done, help: {"reminder ID done" => "Stop nagging"})
18
18
  route(/^reminder\s+delete\s+(\d+)$/, :delete, help: {"reminder ID delete" => "Delete reminder"})
@@ -28,19 +28,26 @@ class ReminderRunner
28
28
  def add(response)
29
29
  task = ReminderTask.from_message(@reminder_count, response.match_data, response.message.source)
30
30
  @redis.rpush("reminders", task.dump)
31
- task.start_job(self)
32
31
  @reminders << task
32
+ task.start_job(self)
33
33
  response.reply("Task #{task.index} added, next run at #{task.job.next_time.strftime('%Y-%m-%d %H:%M:%S')}")
34
34
  @reminder_count += 1
35
35
  end
36
36
 
37
37
  def done(response)
38
- @reminders[response.match_data[1]].stop_repeat
38
+ @reminders[response.match_data[1].to_i].stop_repeat
39
39
  end
40
40
 
41
41
  def delete(response)
42
- index = kill(response.match_data[1].to_i)
43
- response.reply("Task #{index} deleted")
42
+ index = response.match_data[1].to_i
43
+ if @reminders[index].nil?
44
+ response.reply("Task #{index} does not exist")
45
+ elsif index != @reminders[index].index
46
+ response.reply("Task #{index} is broken (bot internal error)")
47
+ else
48
+ kill(index)
49
+ response.reply("Task #{index} deleted")
50
+ end
44
51
  end
45
52
 
46
53
  def list(response)
@@ -60,9 +67,6 @@ class ReminderRunner
60
67
  end
61
68
 
62
69
  def kill(index)
63
- if index != @reminders[index].index
64
- raise 'failed sanity check: task has bad index'
65
- end
66
70
  @reminders[index].die
67
71
  @reminders[index] = nil
68
72
  @redis.lset("reminders", index, nil)
data/lib/reminder/task.rb CHANGED
@@ -69,8 +69,10 @@ class ReminderTask
69
69
  end
70
70
 
71
71
  def stop_repeat
72
- @repeat_job.unschedule
73
- @repeat_job = nil
72
+ unless @repeat_job.nil?
73
+ @repeat_job.unschedule
74
+ @repeat_job = nil
75
+ end
74
76
  unless @periodic
75
77
  kill
76
78
  end
@@ -126,7 +128,11 @@ class ReminderTask
126
128
  else
127
129
  re = /^(user\s+id\s+(?<user_id>.*))?^(user\s+name\s+(?<user_id>.*))?(room \s+(?<room>.*))?$/
128
130
  m = re.match(message['who'])
129
- attrs = attrs.merge(m)
131
+ if m.nil?
132
+ attrs['user_name'] = message['who']
133
+ else
134
+ attrs = attrs.merge(m)
135
+ end
130
136
  end
131
137
  attrs['type'] = message['type']
132
138
  attrs['time'] = message['time']
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "lita-reminder"
3
- spec.version = "0.0.2"
3
+ spec.version = "0.0.3"
4
4
  spec.authors = ["glebtv"]
5
5
  spec.email = ["glebtv@gmail.com"]
6
6
  spec.description = %q{Reminder for Lita chat bot }
@@ -9,6 +9,9 @@ describe Lita::Handlers::Reminder, lita_handler: true do
9
9
  it { routes("reminder delete 1").to(:delete) }
10
10
  it { routes("reminder done 1").to(:done) }
11
11
  it { routes("remind me at 10:00 to do work repeat 2 times 1m").to(:add) }
12
+ it { routes("remind alex at 09:00 to РАБОТАЙ").to(:add) }
13
+ it { routes("remind Shell User in 10s to work").to(:add) }
14
+
12
15
  it "adds tasks" do
13
16
  send_message("remind me at 2024-01-01 10:30 to заплатить за сервер")
14
17
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-reminder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - glebtv