class TChatter::Entry

Attributes

chat[R]
config[R]
threads[R]
user[R]

Public Class Methods

new() click to toggle source
# File lib/t_chatter/entry.rb, line 5
def initialize
  @config = ConfigSetup.instance
  setup_user
  @chat = Chat.new(@user, @config)
  @threads = []
end

Public Instance Methods

commands() click to toggle source
# File lib/t_chatter/entry.rb, line 74
def commands
  {
    '#all_users' => :peep,
    '#help' => :help,
    '#quit' => :quit
  }
end
control_exit_strategy() click to toggle source
# File lib/t_chatter/entry.rb, line 96
def control_exit_strategy
  trap('INT') do
    quit
  end
end
help() click to toggle source
# File lib/t_chatter/entry.rb, line 57
    def help
      var_help = variables_subs.keys.join(', ')
      command_help = commands.keys.join(', ')
      puts <<-EOS
        Use the following variables in any message to refer to its inferred
        meaning in any message: #{var_help}
        You can use any of these commands to also call the inferred action
        #{command_help}
      EOS
    end
peep() click to toggle source
# File lib/t_chatter/entry.rb, line 53
def peep
  chat.show_all_users
end
quit() click to toggle source
# File lib/t_chatter/entry.rb, line 68
def quit
  puts "Gracefully shutting down the chat"
  chat.quit
  @threads.each(&:exit)
end
send_messages() click to toggle source
# File lib/t_chatter/entry.rb, line 82
def send_messages
  Thread.new do
    loop do
      message = gets.chomp.strip
      unless commands.keys.include? message
        message = substitute_variables(message) if message.match(/@\w+/)
        chat.send_message(message) unless message.blank?
      else
        send(commands[message])
      end
    end
  end
end
setup_threads() click to toggle source
# File lib/t_chatter/entry.rb, line 102
def setup_threads
  @threads << stream_messages if want_to_receive?
  @threads << send_messages if want_to_send?
end
setup_user() click to toggle source
# File lib/t_chatter/entry.rb, line 26
def setup_user
  @user = config.configuration[:user]
  unless @user
    print 'Would you mind telling me your name? : '
    @user = gets.chomp
  end
end
start_chat() click to toggle source
# File lib/t_chatter/entry.rb, line 12
def start_chat
  setup_threads
  control_exit_strategy
  start_threads
end
start_threads() click to toggle source
# File lib/t_chatter/entry.rb, line 107
def start_threads
  @threads.each(&:join)
end
stream_messages() click to toggle source
# File lib/t_chatter/entry.rb, line 34
def stream_messages
  Thread.new do
    loop do
      chat.receive_message
    end
  end
end
substitute_variables(message) click to toggle source
# File lib/t_chatter/entry.rb, line 46
def substitute_variables(message)
  variables_subs.each do |var, val|
    message = message.gsub(var, val)
  end
  message
end
variables_subs() click to toggle source
# File lib/t_chatter/entry.rb, line 42
def variables_subs
  { '@my_name' => chat.user.to_s, '@last_message' => chat.messages.last.to_s, '@each_user' => chat.each_user }
end
want_to_receive?() click to toggle source
# File lib/t_chatter/entry.rb, line 22
def want_to_receive?
  @config.configuration.blank? ? true : @config.configuration[:receive]
end
want_to_send?() click to toggle source
# File lib/t_chatter/entry.rb, line 18
def want_to_send?
  @config.configuration.blank? ? true : @config.configuration[:send]
end