summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-10-04 19:03:56 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-10-04 19:03:56 +0000
commit228bb8ea4c882cda737ceceeec9eab207ee19a22 (patch)
tree1290bce73d4357c426d90fec790747e8bd7ef41d /lib
parent2a3528a051347ef336e89576e945dc789aab3771 (diff)
* 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')
-rw-r--r--lib/ipaddr.rb20
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