diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-10-04 19:03:56 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-10-04 19:03:56 +0000 |
commit | 228bb8ea4c882cda737ceceeec9eab207ee19a22 (patch) | |
tree | 1290bce73d4357c426d90fec790747e8bd7ef41d /lib/ipaddr.rb | |
parent | 2a3528a051347ef336e89576e945dc789aab3771 (diff) | |
download | bundler-228bb8ea4c882cda737ceceeec9eab207ee19a22.tar.gz |
* lib/ipaddr.rb (in_addr, in6_addr, addr_mask): Make some minor
code optimization.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/ipaddr.rb')
-rw-r--r-- | lib/ipaddr.rb | 20 |
1 files changed, 6 insertions, 14 deletions
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 |