ipaddr 1.1.0 → 1.2.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3cb27d00fb843e1943f1a7640504fc2ea8970a91
4
- data.tar.gz: ab0c6306a7f5b36fce8e5f6c472864cf52598d0e
2
+ SHA256:
3
+ metadata.gz: d2856d459b11572a7c59a6ad57ec0462b5e851a5c2a012cb6d106a8be15e3739
4
+ data.tar.gz: e8bf2d309cd922ad6c10af07f359034264be462b926718b4d8524e068084fa5f
5
5
  SHA512:
6
- metadata.gz: '0197f4cad3d5497974b2669b49d66c658dc21ce8f5f17df574c16badea57fd0cac83c776cf3f646555049789cd9c0184f226ac9ec90a32285f3d46bc4809aab6'
7
- data.tar.gz: 37ac683429dd8c03202a50feb3c1b1155ebe1ff8e4f42e6707d8be5dae6ba5a21990a7b0e06c145c8e449f64deb446c664b90970ef2e3cb575dc0efe47255371
6
+ metadata.gz: 372737acde9b6852b407d6b38df6392ea2240589eda19798e14fd01184594f0a9ef7d3a30d7f3ce5d178d314ff535a92fb1400f9895863c49047229175e1e350
7
+ data.tar.gz: 46aaa06ed661f88c99b63f844855ec91e9b17639799d5d3d980a77f7db236306511671d6f38b562d08fcdd35150b5bea1adccef2b182c7c8e5563a6439b374d7
data/README.md CHANGED
@@ -3,6 +3,8 @@
3
3
  IPAddr provides a set of methods to manipulate an IP address. Both
4
4
  IPv4 and IPv6 are supported.
5
5
 
6
+ [![Build Status](https://travis-ci.org/ruby/ipaddr.svg?branch=master)](https://travis-ci.org/ruby/ipaddr)
7
+
6
8
  ## Installation
7
9
 
8
10
  This library is part of the standard ruby distribution as default gem
@@ -13,7 +15,7 @@ version than comes with older versions of ruby.
13
15
  For example, you can add this line to your application's Gemfile:
14
16
 
15
17
  ```ruby
16
- gem 'ipaddr', '~> 1.1'
18
+ gem 'ipaddr', '~> 1.2'
17
19
  ```
18
20
 
19
21
  And then execute:
data/ipaddr.gemspec CHANGED
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  # coding: utf-8
2
3
  lib = File.expand_path("../lib", __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
 
5
6
  Gem::Specification.new do |spec|
6
7
  spec.name = "ipaddr"
7
- spec.version = "1.1.0"
8
+ spec.version = "1.2.3"
8
9
  spec.authors = ["Akinori MUSHA", "Hajimu UMEMOTO"]
9
10
  spec.email = ["knu@idaemons.org", "ume@mahoroba.org"]
10
11
 
@@ -14,13 +15,10 @@ IPAddr provides a set of methods to manipulate an IP address.
14
15
  Both IPv4 and IPv6 are supported.
15
16
  DESCRIPTION
16
17
  spec.homepage = "https://github.com/ruby/ipaddr"
18
+ spec.licenses = ["Ruby", "BSD-2-Clause"]
17
19
 
18
- spec.files = [".gitignore", ".travis.yml", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "bin/console", "bin/setup", "ipaddr.gemspec", "lib/ipaddr.rb"]
19
- spec.bindir = "exe"
20
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.files = ["LICENSE.txt", "README.md", "ipaddr.gemspec", "lib/ipaddr.rb"]
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.15"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "test-unit"
23
+ spec.required_ruby_version = ">= 2.3"
26
24
  end
data/lib/ipaddr.rb CHANGED
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  #
3
3
  # ipaddr.rb - A class to manipulate an IP address
4
4
  #
@@ -103,22 +103,21 @@ class IPAddr
103
103
 
104
104
  # Creates a new ipaddr containing the given network byte ordered
105
105
  # string form of an IP address.
106
- def IPAddr::new_ntoh(addr)
107
- return IPAddr.new(IPAddr::ntop(addr))
106
+ def self.new_ntoh(addr)
107
+ return new(ntop(addr))
108
108
  end
109
109
 
110
110
  # Convert a network byte ordered string form of an IP address into
111
111
  # human readable form.
112
- def IPAddr::ntop(addr)
112
+ def self.ntop(addr)
113
113
  case addr.size
114
114
  when 4
115
- s = addr.unpack('C4').join('.')
115
+ addr.unpack('C4').join('.')
116
116
  when 16
117
- s = IN6FORMAT % addr.unpack('n8')
117
+ IN6FORMAT % addr.unpack('n8')
118
118
  else
119
119
  raise AddressFamilyError, "unsupported address family"
120
120
  end
121
- return s
122
121
  end
123
122
 
124
123
  # Returns a new ipaddr built by bitwise AND.
@@ -168,34 +167,17 @@ class IPAddr
168
167
  # net1 = IPAddr.new("192.168.2.0/24")
169
168
  # net2 = IPAddr.new("192.168.2.100")
170
169
  # net3 = IPAddr.new("192.168.3.0")
170
+ # net4 = IPAddr.new("192.168.2.0/16")
171
171
  # p net1.include?(net2) #=> true
172
172
  # p net1.include?(net3) #=> false
173
+ # p net1.include?(net4) #=> false
174
+ # p net4.include?(net1) #=> true
173
175
  def include?(other)
174
176
  other = coerce_other(other)
175
- if ipv4_mapped?
176
- if (@mask_addr >> 32) != 0xffffffffffffffffffffffff
177
- return false
178
- end
179
- mask_addr = (@mask_addr & IN4MASK)
180
- addr = (@addr & IN4MASK)
181
- family = Socket::AF_INET
182
- else
183
- mask_addr = @mask_addr
184
- addr = @addr
185
- family = @family
186
- end
187
- if other.ipv4_mapped?
188
- other_addr = (other.to_i & IN4MASK)
189
- other_family = Socket::AF_INET
190
- else
191
- other_addr = other.to_i
192
- other_family = other.family
193
- end
194
-
195
- if family != other_family
196
- return false
197
- end
198
- return ((addr & mask_addr) == (other_addr & mask_addr))
177
+ return false unless other.family == family
178
+ range = to_range
179
+ other = other.to_range
180
+ range.begin <= other.begin && range.end >= other.end
199
181
  end
200
182
  alias === include?
201
183
 
@@ -232,7 +214,13 @@ class IPAddr
232
214
  # Returns a string containing the IP address representation in
233
215
  # canonical form.
234
216
  def to_string
235
- return _to_string(@addr)
217
+ str = _to_string(@addr)
218
+
219
+ if @family == Socket::AF_INET6
220
+ str << zone_id.to_s
221
+ end
222
+
223
+ return str
236
224
  end
237
225
 
238
226
  # Returns a network byte ordered string form of the IP address.
@@ -259,6 +247,50 @@ class IPAddr
259
247
  return @family == Socket::AF_INET6
260
248
  end
261
249
 
250
+ # Returns true if the ipaddr is a loopback address.
251
+ def loopback?
252
+ case @family
253
+ when Socket::AF_INET
254
+ @addr & 0xff000000 == 0x7f000000
255
+ when Socket::AF_INET6
256
+ @addr == 1
257
+ else
258
+ raise AddressFamilyError, "unsupported address family"
259
+ end
260
+ end
261
+
262
+ # Returns true if the ipaddr is a private address. IPv4 addresses
263
+ # in 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16 as defined in RFC
264
+ # 1918 and IPv6 Unique Local Addresses in fc00::/7 as defined in RFC
265
+ # 4193 are considered private.
266
+ def private?
267
+ case @family
268
+ when Socket::AF_INET
269
+ @addr & 0xff000000 == 0x0a000000 || # 10.0.0.0/8
270
+ @addr & 0xfff00000 == 0xac100000 || # 172.16.0.0/12
271
+ @addr & 0xffff0000 == 0xc0a80000 # 192.168.0.0/16
272
+ when Socket::AF_INET6
273
+ @addr & 0xfe00_0000_0000_0000_0000_0000_0000_0000 == 0xfc00_0000_0000_0000_0000_0000_0000_0000
274
+ else
275
+ raise AddressFamilyError, "unsupported address family"
276
+ end
277
+ end
278
+
279
+ # Returns true if the ipaddr is a link-local address. IPv4
280
+ # addresses in 169.254.0.0/16 reserved by RFC 3927 and Link-Local
281
+ # IPv6 Unicast Addresses in fe80::/10 reserved by RFC 4291 are
282
+ # considered link-local.
283
+ def link_local?
284
+ case @family
285
+ when Socket::AF_INET
286
+ @addr & 0xffff0000 == 0xa9fe0000 # 169.254.0.0/16
287
+ when Socket::AF_INET6
288
+ @addr & 0xffc0_0000_0000_0000_0000_0000_0000_0000 == 0xfe80_0000_0000_0000_0000_0000_0000_0000
289
+ else
290
+ raise AddressFamilyError, "unsupported address family"
291
+ end
292
+ end
293
+
262
294
  # Returns true if the ipaddr is an IPv4-mapped IPv6 address.
263
295
  def ipv4_mapped?
264
296
  return ipv6? && (@addr >> 32) == 0xffff
@@ -266,6 +298,11 @@ class IPAddr
266
298
 
267
299
  # Returns true if the ipaddr is an IPv4-compatible IPv6 address.
268
300
  def ipv4_compat?
301
+ warn "IPAddr\##{__callee__} is obsolete", uplevel: 1 if $VERBOSE
302
+ _ipv4_compat?
303
+ end
304
+
305
+ def _ipv4_compat?
269
306
  if !ipv6? || (@addr >> 32) != 0
270
307
  return false
271
308
  end
@@ -273,20 +310,25 @@ class IPAddr
273
310
  return a != 0 && a != 1
274
311
  end
275
312
 
313
+ private :_ipv4_compat?
314
+
276
315
  # Returns a new ipaddr built by converting the native IPv4 address
277
316
  # into an IPv4-mapped IPv6 address.
278
317
  def ipv4_mapped
279
318
  if !ipv4?
280
- raise InvalidAddressError, "not an IPv4 address"
319
+ raise InvalidAddressError, "not an IPv4 address: #{@addr}"
281
320
  end
282
- return self.clone.set(@addr | 0xffff00000000, Socket::AF_INET6)
321
+ clone = self.clone.set(@addr | 0xffff00000000, Socket::AF_INET6)
322
+ clone.instance_variable_set(:@mask_addr, @mask_addr | 0xffffffffffffffffffffffff00000000)
323
+ clone
283
324
  end
284
325
 
285
326
  # Returns a new ipaddr built by converting the native IPv4 address
286
327
  # into an IPv4-compatible IPv6 address.
287
328
  def ipv4_compat
329
+ warn "IPAddr\##{__callee__} is obsolete", uplevel: 1 if $VERBOSE
288
330
  if !ipv4?
289
- raise InvalidAddressError, "not an IPv4 address"
331
+ raise InvalidAddressError, "not an IPv4 address: #{@addr}"
290
332
  end
291
333
  return self.clone.set(@addr, Socket::AF_INET6)
292
334
  end
@@ -295,7 +337,7 @@ class IPAddr
295
337
  # native IPv4 address. If the IP address is not an IPv4-mapped or
296
338
  # IPv4-compatible IPv6 address, returns self.
297
339
  def native
298
- if !ipv4_mapped? && !ipv4_compat?
340
+ if !ipv4_mapped? && !_ipv4_compat?
299
341
  return self
300
342
  end
301
343
  return self.clone.set(@addr & IN4MASK, Socket::AF_INET)
@@ -317,7 +359,7 @@ class IPAddr
317
359
  # Returns a string for DNS reverse lookup compatible with RFC3172.
318
360
  def ip6_arpa
319
361
  if !ipv6?
320
- raise InvalidAddressError, "not an IPv6 address"
362
+ raise InvalidAddressError, "not an IPv6 address: #{@addr}"
321
363
  end
322
364
  return _reverse + ".ip6.arpa"
323
365
  end
@@ -325,7 +367,7 @@ class IPAddr
325
367
  # Returns a string for DNS reverse lookup compatible with RFC1886.
326
368
  def ip6_int
327
369
  if !ipv6?
328
- raise InvalidAddressError, "not an IPv6 address"
370
+ raise InvalidAddressError, "not an IPv6 address: #{@addr}"
329
371
  end
330
372
  return _reverse + ".ip6.int"
331
373
  end
@@ -352,7 +394,7 @@ class IPAddr
352
394
 
353
395
  # Returns a hash value used by Hash, Set, and Array classes
354
396
  def hash
355
- return ([@addr, @mask_addr].hash << 1) | (ipv4? ? 0 : 1)
397
+ return ([@addr, @mask_addr, @zone_id].hash << 1) | (ipv4? ? 0 : 1)
356
398
  end
357
399
 
358
400
  # Creates a Range object for the network address.
@@ -396,7 +438,7 @@ class IPAddr
396
438
  when Integer
397
439
  mask!(prefix)
398
440
  else
399
- raise InvalidPrefixError, "prefix must be an integer"
441
+ raise InvalidPrefixError, "prefix must be an integer: #{@addr}"
400
442
  end
401
443
  end
402
444
 
@@ -408,11 +450,42 @@ class IPAddr
408
450
  af = "IPv4"
409
451
  when Socket::AF_INET6
410
452
  af = "IPv6"
453
+ zone_id = @zone_id.to_s
411
454
  else
412
455
  raise AddressFamilyError, "unsupported address family"
413
456
  end
414
- return sprintf("#<%s: %s:%s/%s>", self.class.name,
415
- af, _to_string(@addr), _to_string(@mask_addr))
457
+ return sprintf("#<%s: %s:%s%s/%s>", self.class.name,
458
+ af, _to_string(@addr), zone_id, _to_string(@mask_addr))
459
+ end
460
+
461
+ # Returns the netmask in string format e.g. 255.255.0.0
462
+ def netmask
463
+ _to_string(@mask_addr)
464
+ end
465
+
466
+ # Returns the IPv6 zone identifier, if present.
467
+ # Raises InvalidAddressError if not an IPv6 address.
468
+ def zone_id
469
+ if @family == Socket::AF_INET6
470
+ @zone_id
471
+ else
472
+ raise InvalidAddressError, "not an IPv6 address"
473
+ end
474
+ end
475
+
476
+ # Returns the IPv6 zone identifier, if present.
477
+ # Raises InvalidAddressError if not an IPv6 address.
478
+ def zone_id=(zid)
479
+ if @family == Socket::AF_INET6
480
+ case zid
481
+ when nil, /\A%(\w+)\z/
482
+ @zone_id = zid
483
+ else
484
+ raise InvalidAddressError, "invalid zone identifier for address"
485
+ end
486
+ else
487
+ raise InvalidAddressError, "not an IPv6 address"
488
+ end
416
489
  end
417
490
 
418
491
  protected
@@ -424,11 +497,11 @@ class IPAddr
424
497
  case family[0] ? family[0] : @family
425
498
  when Socket::AF_INET
426
499
  if addr < 0 || addr > IN4MASK
427
- raise InvalidAddressError, "invalid address"
500
+ raise InvalidAddressError, "invalid address: #{@addr}"
428
501
  end
429
502
  when Socket::AF_INET6
430
503
  if addr < 0 || addr > IN6MASK
431
- raise InvalidAddressError, "invalid address"
504
+ raise InvalidAddressError, "invalid address: #{@addr}"
432
505
  end
433
506
  else
434
507
  raise AddressFamilyError, "unsupported address family"
@@ -444,14 +517,21 @@ class IPAddr
444
517
  def mask!(mask)
445
518
  case mask
446
519
  when String
447
- if mask =~ /\A\d+\z/
520
+ case mask
521
+ when /\A(0|[1-9]+\d*)\z/
448
522
  prefixlen = mask.to_i
523
+ when /\A\d+\z/
524
+ raise InvalidPrefixError, "leading zeros in prefix"
449
525
  else
450
526
  m = IPAddr.new(mask)
451
527
  if m.family != @family
452
- raise InvalidPrefixError, "address family is not same"
528
+ raise InvalidPrefixError, "address family is not same: #{@addr}"
453
529
  end
454
530
  @mask_addr = m.to_i
531
+ n = @mask_addr ^ m.instance_variable_get(:@mask_addr)
532
+ unless ((n + 1) & n).zero?
533
+ raise InvalidPrefixError, "invalid mask #{mask}: #{@addr}"
534
+ end
455
535
  @addr &= @mask_addr
456
536
  return self
457
537
  end
@@ -461,13 +541,13 @@ class IPAddr
461
541
  case @family
462
542
  when Socket::AF_INET
463
543
  if prefixlen < 0 || prefixlen > 32
464
- raise InvalidPrefixError, "invalid length"
544
+ raise InvalidPrefixError, "invalid length: #{@addr}"
465
545
  end
466
546
  masklen = 32 - prefixlen
467
547
  @mask_addr = ((IN4MASK >> masklen) << masklen)
468
548
  when Socket::AF_INET6
469
549
  if prefixlen < 0 || prefixlen > 128
470
- raise InvalidPrefixError, "invalid length"
550
+ raise InvalidPrefixError, "invalid length: #{@addr}"
471
551
  end
472
552
  masklen = 128 - prefixlen
473
553
  @mask_addr = ((IN6MASK >> masklen) << masklen)
@@ -511,11 +591,16 @@ class IPAddr
511
591
  raise AddressFamilyError, "unsupported address family: #{family}"
512
592
  end
513
593
  end
514
- prefix, prefixlen = addr.split('/')
594
+ prefix, prefixlen = addr.split('/', 2)
515
595
  if prefix =~ /\A\[(.*)\]\z/i
516
596
  prefix = $1
517
597
  family = Socket::AF_INET6
518
598
  end
599
+ if prefix =~ /\A(.*)(%\w+)\z/
600
+ prefix = $1
601
+ zone_id = $2
602
+ family = Socket::AF_INET6
603
+ end
519
604
  # It seems AI_NUMERICHOST doesn't do the job.
520
605
  #Socket.getaddrinfo(left, nil, Socket::AF_INET6, Socket::SOCK_STREAM, nil,
521
606
  # Socket::AI_NUMERICHOST)
@@ -530,6 +615,7 @@ class IPAddr
530
615
  @addr = in6_addr(prefix)
531
616
  @family = Socket::AF_INET6
532
617
  end
618
+ @zone_id = zone_id
533
619
  if family != Socket::AF_UNSPEC && @family != family
534
620
  raise AddressFamilyError, "address family mismatch"
535
621
  end
@@ -560,8 +646,8 @@ class IPAddr
560
646
  octets = m.captures
561
647
  end
562
648
  octets.inject(0) { |i, s|
563
- (n = s.to_i) < 256 or raise InvalidAddressError, "invalid address"
564
- s.match(/\A0./) and raise InvalidAddressError, "zero-filled number in IPv4 address is ambiguous"
649
+ (n = s.to_i) < 256 or raise InvalidAddressError, "invalid address: #{@addr}"
650
+ s.match(/\A0./) and raise InvalidAddressError, "zero-filled number in IPv4 address is ambiguous: #{@addr}"
565
651
  i << 8 | n
566
652
  }
567
653
  end
@@ -578,19 +664,19 @@ class IPAddr
578
664
  right = ''
579
665
  when RE_IPV6ADDRLIKE_COMPRESSED
580
666
  if $4
581
- left.count(':') <= 6 or raise InvalidAddressError, "invalid address"
667
+ left.count(':') <= 6 or raise InvalidAddressError, "invalid address: #{@addr}"
582
668
  addr = in_addr($~[4,4])
583
669
  left = $1
584
670
  right = $3 + '0:0'
585
671
  else
586
672
  left.count(':') <= ($1.empty? || $2.empty? ? 8 : 7) or
587
- raise InvalidAddressError, "invalid address"
673
+ raise InvalidAddressError, "invalid address: #{@addr}"
588
674
  left = $1
589
675
  right = $2
590
676
  addr = 0
591
677
  end
592
678
  else
593
- raise InvalidAddressError, "invalid address"
679
+ raise InvalidAddressError, "invalid address: #{@addr}"
594
680
  end
595
681
  l = left.split(':')
596
682
  r = right.split(':')
metadata CHANGED
@@ -1,58 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ipaddr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akinori MUSHA
8
8
  - Hajimu UMEMOTO
9
- autorequire:
10
- bindir: exe
9
+ autorequire:
10
+ bindir: bin
11
11
  cert_chain: []
12
- date: 2017-10-21 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: bundler
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: '1.15'
21
- type: :development
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
27
- version: '1.15'
28
- - !ruby/object:Gem::Dependency
29
- name: rake
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: '10.0'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: '10.0'
42
- - !ruby/object:Gem::Dependency
43
- name: test-unit
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: '0'
12
+ date: 2021-10-25 00:00:00.000000000 Z
13
+ dependencies: []
56
14
  description: |
57
15
  IPAddr provides a set of methods to manipulate an IP address.
58
16
  Both IPv4 and IPv6 are supported.
@@ -63,20 +21,16 @@ executables: []
63
21
  extensions: []
64
22
  extra_rdoc_files: []
65
23
  files:
66
- - ".gitignore"
67
- - ".travis.yml"
68
- - Gemfile
69
24
  - LICENSE.txt
70
25
  - README.md
71
- - Rakefile
72
- - bin/console
73
- - bin/setup
74
26
  - ipaddr.gemspec
75
27
  - lib/ipaddr.rb
76
28
  homepage: https://github.com/ruby/ipaddr
77
- licenses: []
29
+ licenses:
30
+ - Ruby
31
+ - BSD-2-Clause
78
32
  metadata: {}
79
- post_install_message:
33
+ post_install_message:
80
34
  rdoc_options: []
81
35
  require_paths:
82
36
  - lib
@@ -84,16 +38,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
84
38
  requirements:
85
39
  - - ">="
86
40
  - !ruby/object:Gem::Version
87
- version: '0'
41
+ version: '2.3'
88
42
  required_rubygems_version: !ruby/object:Gem::Requirement
89
43
  requirements:
90
44
  - - ">="
91
45
  - !ruby/object:Gem::Version
92
46
  version: '0'
93
47
  requirements: []
94
- rubyforge_project:
95
- rubygems_version: 2.6.14
96
- signing_key:
48
+ rubygems_version: 3.2.22
49
+ signing_key:
97
50
  specification_version: 4
98
51
  summary: A class to manipulate an IP address in ruby
99
52
  test_files: []
data/.gitignore DELETED
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
data/.travis.yml DELETED
@@ -1,14 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.4
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
14
- before_install: gem install bundler
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in ipaddr.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,10 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
3
-
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
7
- t.test_files = FileList["test/**/test_*.rb"]
8
- end
9
-
10
- task :default => :test
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "ipaddr"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here