ipaddr 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +9 -1
  3. data/README.md +14 -2
  4. data/ipaddr.gemspec +2 -4
  5. data/lib/ipaddr.rb +31 -1
  6. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e0852ad74f0bf3001f4c3bc91c8f4709066469b3
4
- data.tar.gz: e7207467627207e243b6764fd80cb9d27c4690e9
3
+ metadata.gz: 3cb27d00fb843e1943f1a7640504fc2ea8970a91
4
+ data.tar.gz: ab0c6306a7f5b36fce8e5f6c472864cf52598d0e
5
5
  SHA512:
6
- metadata.gz: 6819559510a3f7e073dc08ecba98679efd9bed002cb780b4efdb925477af41d1c36bfeb8c2057826bab94b3196ea4769886299cecd5a661273651c88d54a1c0f
7
- data.tar.gz: 8fa05f41fe8712d9641dd03515341611dd46ee2fdd9a0deb886942a8e17fed97c6e01f9d0d007d40cc554dea7bf0870e9896ad8cd0ffc857c1cc802807187377
6
+ metadata.gz: '0197f4cad3d5497974b2669b49d66c658dc21ce8f5f17df574c16badea57fd0cac83c776cf3f646555049789cd9c0184f226ac9ec90a32285f3d46bc4809aab6'
7
+ data.tar.gz: 37ac683429dd8c03202a50feb3c1b1155ebe1ff8e4f42e6707d8be5dae6ba5a21990a7b0e06c145c8e449f64deb446c664b90970ef2e3cb575dc0efe47255371
@@ -1,6 +1,14 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.4.1
4
+ - 2.4
5
5
  - ruby-head
6
+ - jruby
7
+ - jruby-head
8
+ matrix:
9
+ allow_failures:
10
+ # Even `rvm use jruby` does not work reliably on Travis:
11
+ # https://travis-ci.org/ruby/ipaddr/jobs/277222999
12
+ - rvm: jruby
13
+ - rvm: jruby-head
6
14
  before_install: gem install bundler
data/README.md CHANGED
@@ -5,10 +5,15 @@ IPv4 and IPv6 are supported.
5
5
 
6
6
  ## Installation
7
7
 
8
- Add this line to your application's Gemfile:
8
+ This library is part of the standard ruby distribution as default gem
9
+ and synchronized periodically, but you can explicitly depend on this
10
+ gem with version constraints as necessary, like when you need a newer
11
+ version than comes with older versions of ruby.
12
+
13
+ For example, you can add this line to your application's Gemfile:
9
14
 
10
15
  ```ruby
11
- gem 'ipaddr'
16
+ gem 'ipaddr', '~> 1.1'
12
17
  ```
13
18
 
14
19
  And then execute:
@@ -39,6 +44,13 @@ ipaddr3 = IPAddr.new "192.168.2.0/24"
39
44
  p ipaddr3 #=> #<IPAddr: IPv4:192.168.2.0/255.255.255.0>
40
45
  ```
41
46
 
47
+ ## Alternative
48
+
49
+ The [ipaddress](https://rubygems.org/gems/ipaddress) gem is a popular,
50
+ extensive library for manipulating IP addresses with a layer of
51
+ compatibility with `ipaddr`. If you need a richer set of features
52
+ than `ipaddr` has, try this library instead.
53
+
42
54
  ## Development
43
55
 
44
56
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "ipaddr"
7
- spec.version = "1.0.0"
7
+ spec.version = "1.1.0"
8
8
  spec.authors = ["Akinori MUSHA", "Hajimu UMEMOTO"]
9
9
  spec.email = ["knu@idaemons.org", "ume@mahoroba.org"]
10
10
 
@@ -15,9 +15,7 @@ Both IPv4 and IPv6 are supported.
15
15
  DESCRIPTION
16
16
  spec.homepage = "https://github.com/ruby/ipaddr"
17
17
 
18
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
- f.match(%r{^(test|spec|features)/})
20
- end
18
+ spec.files = [".gitignore", ".travis.yml", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "bin/console", "bin/setup", "ipaddr.gemspec", "lib/ipaddr.rb"]
21
19
  spec.bindir = "exe"
22
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
21
  spec.require_paths = ["lib"]
@@ -371,6 +371,35 @@ class IPAddr
371
371
  return clone.set(begin_addr, @family)..clone.set(end_addr, @family)
372
372
  end
373
373
 
374
+ # Returns the prefix length in bits for the ipaddr.
375
+ def prefix
376
+ case @family
377
+ when Socket::AF_INET
378
+ n = IN4MASK ^ @mask_addr
379
+ i = 32
380
+ when Socket::AF_INET6
381
+ n = IN6MASK ^ @mask_addr
382
+ i = 128
383
+ else
384
+ raise AddressFamilyError, "unsupported address family"
385
+ end
386
+ while n.positive?
387
+ n >>= 1
388
+ i -= 1
389
+ end
390
+ i
391
+ end
392
+
393
+ # Sets the prefix length in bits
394
+ def prefix=(prefix)
395
+ case prefix
396
+ when Integer
397
+ mask!(prefix)
398
+ else
399
+ raise InvalidPrefixError, "prefix must be an integer"
400
+ end
401
+ end
402
+
374
403
  # Returns a string containing a human-readable representation of the
375
404
  # ipaddr. ("#<IPAddr: family:address/mask>")
376
405
  def inspect
@@ -413,7 +442,8 @@ class IPAddr
413
442
 
414
443
  # Set current netmask to given mask.
415
444
  def mask!(mask)
416
- if mask.kind_of?(String)
445
+ case mask
446
+ when String
417
447
  if mask =~ /\A\d+\z/
418
448
  prefixlen = mask.to_i
419
449
  else
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ipaddr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akinori MUSHA
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-08-02 00:00:00.000000000 Z
12
+ date: 2017-10-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -92,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  version: '0'
93
93
  requirements: []
94
94
  rubyforge_project:
95
- rubygems_version: 2.6.11
95
+ rubygems_version: 2.6.14
96
96
  signing_key:
97
97
  specification_version: 4
98
98
  summary: A class to manipulate an IP address in ruby