X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=lib%2Frbot%2Firc.rb;h=23bd9e0da2b922df16ea8b3fdb5104da321fab1e;hb=2f2644f03203b36fd6aa105e62f4cd15070e1cbe;hp=72579b1967ce6c07b442c5ab559391940cb84d39;hpb=847a977b228b35f5ab281a31dd3724a4db887dff;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/lib/rbot/irc.rb b/lib/rbot/irc.rb index 72579b19..23bd9e0d 100644 --- a/lib/rbot/irc.rb +++ b/lib/rbot/irc.rb @@ -493,8 +493,8 @@ class Regexp HEX_DIGITS = /#{HEX_DIGIT}+/ HEX_OCTET = /#{HEX_DIGIT}#{HEX_DIGIT}?/ DEC_OCTET = /[01]?\d?\d|2[0-4]\d|25[0-5]/ - DEC_IP_ADDR = /#{DEC_OCTET}.#{DEC_OCTET}.#{DEC_OCTET}.#{DEC_OCTET}/ - HEX_IP_ADDR = /#{HEX_OCTET}.#{HEX_OCTET}.#{HEX_OCTET}.#{HEX_OCTET}/ + DEC_IP_ADDR = /#{DEC_OCTET}\.#{DEC_OCTET}\.#{DEC_OCTET}\.#{DEC_OCTET}/ + HEX_IP_ADDR = /#{HEX_OCTET}\.#{HEX_OCTET}\.#{HEX_OCTET}\.#{HEX_OCTET}/ IP_ADDR = /#{DEC_IP_ADDR}|#{HEX_IP_ADDR}/ # IPv6, from Resolv::IPv6, without the \A..\z anchors @@ -1101,6 +1101,16 @@ module Irc end + # Hash of modes. Subclass of Hash that defines any? and all? + # to check if boolean modes (Type D) are set + class ModeHash < Hash + def any?(*ar) + !!ar.find { |m| s = m.to_sym ; self[s] && self[s].set? } + end + def all?(*ar) + !ar.find { |m| s = m.to_sym ; !(self[s] && self[s].set?) } + end + end # Channel modes of type A manipulate lists # @@ -1289,12 +1299,15 @@ module Irc include ServerOrCasemap attr_reader :name, :topic, :mode, :users alias :to_s :name + attr_accessor :creation_time, :url def inspect str = self.__to_s__[0..-2] str << " on server #{server}" if server str << " @name=#{@name.inspect} @topic=#{@topic.text.inspect}" str << " @users=[#{user_nicks.sort.join(', ')}]" + str << " (created on #{creation_time})" if creation_time + str << " (URL #{url})" if url str << ">" end @@ -1357,15 +1370,13 @@ module Irc } # Flags - @mode = {} - class << @mode - def any?(*ar) - !!ar.find { |m| s = m.to_sym ; self[s] && self[s].set? } - end - def all?(*ar) - !ar.find { |m| s = m.to_sym ; !(self[s] && self[s].set?) } - end - end + @mode = ModeHash.new + + # creation time, only on some networks + @creation_time = nil + + # URL, only on some networks + @url = nil end # Removes a user from the channel