module Barrymore::InstanceMethods
Instance-level helpers
Public Instance Methods
chat_data(arg)
click to toggle source
arg [Object] - arg.chat or arg itself will be used
# File lib/barrymore/instance_methods.rb, line 29 def chat_data(arg) chat = arg.respond_to?(:chat) ? arg.chat : arg barrymore_chats_data[chat] ||= {}.freeze end
command_defined?(*args)
click to toggle source
# File lib/barrymore/instance_methods.rb, line 40 def command_defined?(*args) self.class.command_defined?(*args) end
command_in_progress?(msg)
click to toggle source
# File lib/barrymore/instance_methods.rb, line 44 def command_in_progress?(msg) commands_in_progress.key?(msg.chat) end
commands_in_progress()
click to toggle source
# File lib/barrymore/instance_methods.rb, line 48 def commands_in_progress @commands_in_progress ||= {} end
continue_command(msg)
click to toggle source
# File lib/barrymore/instance_methods.rb, line 34 def continue_command(msg) raise(NoCommandInProgressError, msg.chat.to_s) unless command_in_progress?(msg) proc = get_barrymore_command(commands_in_progress[msg.chat]).continuation instance_exec(msg, &proc) end
execute_command(msg)
click to toggle source
command should be specified in msg.text. chat should be specified in msg.chat.
# File lib/barrymore/instance_methods.rb, line 8 def execute_command(msg) raise(UndefinedCommandError, msg.text) unless command_defined?(msg) instance_exec(msg, &get_barrymore_command(msg).execution) end
set_chat_data(arg, data)
click to toggle source
arg [Object] - arg.chat or arg itself will be used
# File lib/barrymore/instance_methods.rb, line 23 def set_chat_data(arg, data) chat = arg.respond_to?(:chat) ? arg.chat : arg barrymore_chats_data[chat] = chat_data(arg).merge(data).freeze end
start_command_processing(msg)
click to toggle source
# File lib/barrymore/instance_methods.rb, line 13 def start_command_processing(msg) # TODO: use chat_data ? commands_in_progress[msg.chat] = msg.text end
stop_command_processing(msg)
click to toggle source
# File lib/barrymore/instance_methods.rb, line 18 def stop_command_processing(msg) commands_in_progress.delete(msg.chat) end
Private Instance Methods
barrymore_chats_data()
click to toggle source
You don’t need private methods. They are only for barrymore implementation
# File lib/barrymore/instance_methods.rb, line 59 def barrymore_chats_data @barrymore_chats_data ||= {} end
barrymore_commands()
click to toggle source
# File lib/barrymore/instance_methods.rb, line 63 def barrymore_commands self.class.send :barrymore_commands end
get_barrymore_command(*args)
click to toggle source
# File lib/barrymore/instance_methods.rb, line 67 def get_barrymore_command(*args) self.class.send(:get_barrymore_command, *args) end