lita-reminder 0.0.2 → 0.0.3

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