diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/ipaddr.rb | 20 |
2 files changed, 11 insertions, 14 deletions
@@ -1,3 +1,8 @@ +Fri Oct 5 04:02:39 2007 Akinori MUSHA <knu@iDaemons.org> + + * lib/ipaddr.rb (in_addr, in6_addr, addr_mask): Make some minor + code optimization. + Fri Oct 5 03:25:51 2007 Akinori MUSHA <knu@iDaemons.org> * lib/ipaddr.rb (<=>): Implement IPAddr#<=> and make IPAddr diff --git a/lib/ipaddr.rb b/lib/ipaddr.rb index 56b906c805..d69339a7c8 100644 --- a/lib/ipaddr.rb +++ b/lib/ipaddr.rb @@ -496,12 +496,9 @@ class IPAddr def in_addr(addr) if addr =~ /^\d+\.\d+\.\d+\.\d+$/ - n = 0 - addr.split('.').each { |i| - n <<= 8 - n += i.to_i + return addr.split('.').inject(0) { |i, s| + i << 8 | s.to_i } - return n end return nil end @@ -525,25 +522,20 @@ class IPAddr if rest < 0 return nil end - a = [l, Array.new(rest, '0'), r].flatten! - n = 0 - a.each { |i| - n <<= 16 - n += i.hex + return (l + Array.new(rest, '0') + r).inject(0) { |i, s| + i << 16 | s.hex } - return n end def addr_mask(addr) case @family when Socket::AF_INET - addr &= IN4MASK + return addr & IN4MASK when Socket::AF_INET6 - addr &= IN6MASK + return addr & IN6MASK else raise "unsupported address family" end - return addr end def _reverse |