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