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