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