diff options
author | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2007-02-11 09:23:12 +0000 |
---|---|---|
committer | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2007-02-11 09:23:12 +0000 |
commit | 4179ece26a79077775c7ec35a77445fc917f2788 (patch) | |
tree | ef978248b9fb4f8227e9b1a172b9d7ff73ee33fb /lib/rbot/ircsocket.rb | |
parent | 10025272f5d85daa27b73dcf2c90c33fa3f216fc (diff) |
Start work on preferring size to length: it's the same for arrays, and will be more correct in most cases when proper support for multibyte strings will be implemented (via package or because of ruby 2)
Diffstat (limited to 'lib/rbot/ircsocket.rb')
-rw-r--r-- | lib/rbot/ircsocket.rb | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/lib/rbot/ircsocket.rb b/lib/rbot/ircsocket.rb index e70528ea..973ae9b8 100644 --- a/lib/rbot/ircsocket.rb +++ b/lib/rbot/ircsocket.rb @@ -3,9 +3,9 @@ class ::String # by the IRCd def irc_send_penalty # According to eggrdop, the initial penalty is - penalty = 1 + self.length/100 + penalty = 1 + self.size/100 # on everything but UnderNET where it's - # penalty = 2 + self.length/120 + # penalty = 2 + self.size/120 cmd, pars = self.split($;,2) debug "cmd: #{cmd}, pars: #{pars.inspect}" @@ -14,29 +14,29 @@ class ::String chan, nick, msg = pars.split chan = chan.split(',') nick = nick.split(',') - penalty += nick.length - penalty *= chan.length + penalty += nick.size + penalty *= chan.size when :MODE chan, modes, argument = pars.split extra = 0 if modes extra = 1 if argument - extra += modes.split(/\+|-/).length + extra += modes.split(/\+|-/).size else - extra += 3 * modes.split(/\+|-/).length + extra += 3 * modes.split(/\+|-/).size end end if argument - extra += 2 * argument.split.length + extra += 2 * argument.split.size end - penalty += extra * chan.split.length + penalty += extra * chan.split.size when :TOPIC penalty += 1 - penalty += 2 unless pars.split.length < 2 + penalty += 2 unless pars.split.size < 2 when :PRIVMSG, :NOTICE dests = pars.split($;,2).first - penalty += dests.split(',').length + penalty += dests.split(',').size when :WHO # I'm too lazy to implement this one correctly penalty += 5 @@ -85,12 +85,13 @@ module Irc end def length - length = 0 + len = 0 @storage.each {|c| - length += c[1].length + len += c[1].size } - return length + return len end + alias :size :length def empty? @storage.empty? @@ -113,7 +114,7 @@ module Irc return nil end save_idx = @last_idx - @last_idx = (@last_idx + 1) % @storage.length + @last_idx = (@last_idx + 1) % @storage.size mess = @storage[@last_idx][1].first @last_idx = save_idx return mess @@ -124,7 +125,7 @@ module Irc warning "trying to access empty ring" return nil end - @last_idx = (@last_idx + 1) % @storage.length + @last_idx = (@last_idx + 1) % @storage.size mess = @storage[@last_idx][1].shift @storage.delete(@storage[@last_idx]) if @storage[@last_idx][1] == [] return mess @@ -180,10 +181,11 @@ module Irc def length len = 0 @rings.each { |r| - len += r.length + len += r.size } len end + alias :size :length def next if empty? @@ -195,8 +197,8 @@ module Irc mess = @rings[0].first else save_ring = @last_ring - (@rings.length - 1).times { - @last_ring = (@last_ring % (@rings.length - 1)) + 1 + (@rings.size - 1).times { + @last_ring = (@last_ring % (@rings.size - 1)) + 1 if !@rings[@last_ring].empty? mess = @rings[@last_ring].next break @@ -217,8 +219,8 @@ module Irc if !@rings[0].empty? return @rings[0].shift end - (@rings.length - 1).times { - @last_ring = (@last_ring % (@rings.length - 1)) + 1 + (@rings.size - 1).times { + @last_ring = (@last_ring % (@rings.size - 1)) + 1 if !@rings[@last_ring].empty? return @rings[@last_ring].shift end @@ -420,7 +422,7 @@ module Irc return end @flood_send = now if @flood_send < now - debug "can send #{@sendq_burst - @burst} lines, there are #{@sendq.length} to send" + debug "can send #{@sendq_burst - @burst} lines, there are #{@sendq.size} to send" while !@sendq.empty? and @burst < @sendq_burst and @flood_send - now < MAX_IRC_SEND_PENALTY debug "sending message (#{@flood_send - now} < #{MAX_IRC_SEND_PENALTY})" puts_critical(@sendq.shift, true) |