class EventMachine::IRC::Channel

Attributes

name[R]
topic[R]

Public Class Methods

new(name) click to toggle source
# 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
has_nick?(m)
Alias for: is_member?
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