class Lita::Updates::Conversation
Constants
- INTRODUCTION
- PROMPTS
- STATES
Attributes
data[R]
message[R]
robot[R]
user[R]
Public Class Methods
new(robot, redis, user, message = nil)
click to toggle source
# File lib/lita/updates/conversation.rb, line 14 def initialize(robot, redis, user, message = nil) @robot = robot @data = Lita::Updates::Data.new redis, user @user = user @message = message self.state = "idle" if state.nil? || state.empty? end
Public Instance Methods
call()
click to toggle source
# File lib/lita/updates/conversation.rb, line 23 def call return if message && state == "idle" if message && message.body.downcase == "cancel" say "This standup has been cancelled. To start again, just say `standup`." self.state = "idle" return end data.write state, message.body unless state == "idle" || message.nil? self.state = next_state say PROMPTS[state] if state == "done" report self.state = "idle" end end
Private Instance Methods
next_state()
click to toggle source
# File lib/lita/updates/conversation.rb, line 46 def next_state STATES[STATES.index(state) + 1] || "idle" end
report()
click to toggle source
# File lib/lita/updates/conversation.rb, line 65 def report reporter.new(robot, data, user).call end
reporter()
click to toggle source
# File lib/lita/updates/conversation.rb, line 69 def reporter case Lita.config.robot.adapter when :slack Lita::Updates::SlackReport else Lita::Updates::Report end end
say(text)
click to toggle source
# File lib/lita/updates/conversation.rb, line 58 def say(text) return if text.nil? || text.empty? robot.send_message(Lita::Source.new(user: @user), text) end
state()
click to toggle source
# File lib/lita/updates/conversation.rb, line 50 def state data.read("state") || "idle" end
state=(value)
click to toggle source
# File lib/lita/updates/conversation.rb, line 54 def state=(value) data.write "state", value end