class AjaxChat
Attributes
rws[R]
views[R]
Public Class Methods
new(chatobj=ChatCore.new, rws: DummyRws.new(self), config: nil, debug: false)
click to toggle source
# File lib/h2g_ajaxchat.rb, line 376 def initialize(chatobj=ChatCore.new, rws: DummyRws.new(self), config: nil, debug: false) @chat, @rws, @debug = chatobj, rws, debug @plugins = if config then SimpleConfig.new(config).to_h.map do |name, settings| puts 'name: ' + name.inspect if @debug settings = {} if settings.is_a? String next if settings[:disabled] pluginklass_name = 'AjaxChatPlugin' + name.to_s #Kernel.const_get(pluginklass_name).new(self, settings, debug: false) eval("#{pluginklass_name}.new(self, #{settings}, debug: false)") end.compact else [] end @h = {} @index, @login, @logout, @logout_post = \ [Index, Login, Logout, LogoutPost].map do |klass| klass.new @h end @views = { index: @index, login: @login, logout: @logout, logout_post: @logout_post } @plugins.each {|plugin| plugin.apply if plugin.respond_to? :apply } end
Public Instance Methods
chatter(newmsg=nil)
click to toggle source
# File lib/h2g_ajaxchat.rb, line 422 def chatter(newmsg=nil) id, users = @rws.req.session[:session_id].to_s, @chat.users chat = @chat # check for new messages to be added via the plugins @plugins.each do |plugin| next unless plugin.respond_to? :messages plugin.messages.each {|x| chat.append_message *x } end plugins = @plugins @chat.chatter(@rws.req, newmsg) do |t, uid, username, msg| plugins.each do |x| x.on_newmessage(t, uid, username, msg) if x.respond_to? :on_newmessage end s2 = if id == uid then "you: %s" % msg else "%s: %s" % [users[uid], msg] end "<p><span id='time'>%s</span> %s</p>" % [t.strftime("%H:%M:%S"), s2] end end
index()
click to toggle source
# File lib/h2g_ajaxchat.rb, line 485 def index() if @rws.req.session[:username] then @h[:username] = @rws.req.session[:username] view @index else @rws.redirect 'login' end end
login()
click to toggle source
# File lib/h2g_ajaxchat.rb, line 458 def login() view @login end
login_post(username)
click to toggle source
# File lib/h2g_ajaxchat.rb, line 464 def login_post(username) @chat.login @rws.req, username @h[:username] = username @rws.redirect 'index' end
logout()
click to toggle source
# File lib/h2g_ajaxchat.rb, line 472 def logout() view @logout end
logout_post()
click to toggle source
# File lib/h2g_ajaxchat.rb, line 478 def logout_post() @chat.logout @rws.req view @logout_post end
messages()
click to toggle source
used for debugging
# File lib/h2g_ajaxchat.rb, line 501 def messages() @chat.messages end
req(obj)
click to toggle source
# File lib/h2g_ajaxchat.rb, line 505 def req(obj) @rws.req = obj self end
users()
click to toggle source
used for debugging
# File lib/h2g_ajaxchat.rb, line 513 def users() @chat.users end
Private Instance Methods
view(obj)
click to toggle source
# File lib/h2g_ajaxchat.rb, line 519 def view(obj) puts 'inside view obj: ' + obj.inspect if @debug if obj.to_s.length > 0 then obj.to_s else obj end end