class EventMachine::IRC::Channel
Attributes
name[R]
topic[R]
Public Class Methods
new(name)
click to toggle source
Calls superclass method
EventMachine::IRC::SynchronizedStore::new
# File lib/eventmachine/irc/server.rb, line 610 def initialize(name) super() @topic = "There is no topic" @name = name @oper = [] carp "create channel:#{@name}" end
Public Instance Methods
add(client)
click to toggle source
# File lib/eventmachine/irc/server.rb, line 619 def add(client) @oper << client.nick if @oper.empty? and @store.empty? self[client.nick] = client end
is_member?(m)
click to toggle source
# File lib/eventmachine/irc/server.rb, line 688 def is_member?(m) values.include?(m) end
Also aliased as: has_nick?
join(client)
click to toggle source
# File lib/eventmachine/irc/server.rb, line 628 def join(client) return false if is_member? client add client #send join to each user in the channel each_user {|user| user.reply :join, client.userprefix, @name } return true end
mode(u)
click to toggle source
# File lib/eventmachine/irc/server.rb, line 684 def mode(u) return @oper.include?(u.nick) ? '@' : '' end
nicks()
click to toggle source
# File lib/eventmachine/irc/server.rb, line 680 def nicks return keys end
notice(msg, client)
click to toggle source
# File lib/eventmachine/irc/server.rb, line 665 def notice(msg, client) each_user {|user| user.reply :notice, client.userprefix, @name, msg if user != client } end
part(client, msg)
click to toggle source
# File lib/eventmachine/irc/server.rb, line 638 def part(client, msg) return false if !is_member? client each_user {|user| user.reply :part, client.userprefix, @name, msg } remove client Server.channel_store.delete(@name) if self.empty? return true end
privatemsg(msg, client)
click to toggle source
# File lib/eventmachine/irc/server.rb, line 659 def privatemsg(msg, client) each_user {|user| user.reply :privmsg, client.userprefix, @name, msg if user != client } end
quit(client, msg)
click to toggle source
# File lib/eventmachine/irc/server.rb, line 648 def quit(client, msg) #remove client should happen before sending notification #to others since we dont want a notification to ourselves #after quit. remove client each_user {|user| user.reply :quit, client.userprefix, @name, msg if user!= client } Server.channel_store.delete(@name) if self.empty? end
remove(client)
click to toggle source
# File lib/eventmachine/irc/server.rb, line 624 def remove(client) delete(client.nick) end