class ChatCore
Attributes
messages[R]
users[R]
Public Class Methods
new(debug: false)
click to toggle source
# File lib/h2g_ajaxchat.rb, line 70 def initialize(debug: false) @debug = debug @messages = [] @count = 0 @users = {} end
Public Instance Methods
append_message(t=Time.now, id=@session[:session_id].to_s, u=@session[:username], msg)
click to toggle source
# File lib/h2g_ajaxchat.rb, line 137 def append_message(t=Time.now, id=@session[:session_id].to_s, u=@session[:username], msg) @users[id] = u.to_s @messages << [t, id, u, msg] end
chatter(req, newmsg=nil) { |t, id, u, msg| ... }
click to toggle source
# File lib/h2g_ajaxchat.rb, line 86 def chatter(req, newmsg=nil) @session = req.session append_message(newmsg) if newmsg return '' if @messages.empty? c = @session[:last_id] pos = if c then last_msg = @messages.find {|x| x.object_id.to_i == c} last_msg ? @messages.index(last_msg) + 1 : @messages.length - 1 else return '' unless newmsg @messages.length - 1 end if @debug then puts 'pos: ' + pos.inspect puts '@messages: ' + @messages.inspect end @session[:last_id] = @messages.last.object_id.to_i a = @messages[pos..-1].map do |t, id, u, msg| if block_given? then yield(t, id, u, msg) else s = "user%s: %s" % [id, msg] [t.strftime("%H:%M:%S"), s].join(' ') end end a.join("\n") end
login(req, username)
click to toggle source
# File lib/h2g_ajaxchat.rb, line 78 def login(req, username) req.session[:username] = username end
logout(req)
click to toggle source
# File lib/h2g_ajaxchat.rb, line 82 def logout(req) req.session.clear end