class Chan require 'nick.rb' require 'mode.rb' attr_reader :name, :mode, :nicklist, :ops, :voices, :hops attr_writer :topic, :topicwhowhen attr_accessor :sync def initialize(server, name) @server, @name = server, name.downcase @nicklist = Array.new @nickmodes = Hash.new @mode = Mode.new @sync = false @topic, @topicwhowhen = '', ['', 0] @ops = Array.new @hops = Array.new @voices = Array.new end def setmode(mode) @mode.set mode end def modemod(modemod) @mode += modemod end def topic [@topic, @topicwhowhen] end def join(nick) @nicklist << nick unless @nicklist.include? nick @nickmodes[nick] = '' nick.join self end def part(nick) @nickmodes.delete nick nick.part self end def quit # le chan est détruit @nicklist.each{ |n| part n } @nicklist.replace [] end def addop(nick) @ops << nick unless @ops.include? nick end def delop(nick) @ops.delete nick end def addvoice(nick) @voices << nick unless @voices.include? nick end def delvoice(nick) @voices.delete nick end def addhop(nick) @hops << nick unless @hops.include? nick end def delhop(nick) @hops.delete nick end def to_str @name + ' ' + @mode + (self.synced? ? ' (sync) ' : ' (unsync) ') + 'topic : "' + @topic + '" set by ' + @topicwhowhen[0] + "\n userlist: " + @nicklist.map{|n| (@ops.include? n ? '@' : '') + (@voices.include? n ? '+' : '') + (@hops.include? n ? '%' : '') + n.nick}.join(', ') end alias to_str to_s end