polyfill 0.3.0 → 0.4.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 (107) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +35 -0
  3. data/CHANGELOG.md +31 -2
  4. data/CONTRIBUTING.md +48 -17
  5. data/README.md +110 -80
  6. data/Rakefile +3 -1
  7. data/bin/console +3 -3
  8. data/lib/polyfill.rb +30 -19
  9. data/lib/polyfill/v2_4.rb +29 -12
  10. data/lib/polyfill/v2_4/array.rb +1 -1
  11. data/lib/polyfill/v2_4/array/instance.rb +3 -1
  12. data/lib/polyfill/v2_4/array/instance/concat.rb +5 -7
  13. data/lib/polyfill/v2_4/array/instance/sum.rb +17 -0
  14. data/lib/polyfill/v2_4/comparable.rb +1 -1
  15. data/lib/polyfill/v2_4/comparable/instance.rb +1 -1
  16. data/lib/polyfill/v2_4/comparable/instance/clamp.rb +11 -13
  17. data/lib/polyfill/v2_4/dir.rb +1 -1
  18. data/lib/polyfill/v2_4/dir/class.rb +1 -1
  19. data/lib/polyfill/v2_4/dir/class/empty_q.rb +5 -7
  20. data/lib/polyfill/v2_4/enumerable.rb +9 -0
  21. data/lib/polyfill/v2_4/enumerable/instance.rb +15 -0
  22. data/lib/polyfill/v2_4/enumerable/instance/chunk.rb +46 -0
  23. data/lib/polyfill/v2_4/enumerable/instance/sum.rb +52 -0
  24. data/lib/polyfill/v2_4/enumerable/instance/uniq.rb +45 -0
  25. data/lib/polyfill/v2_4/enumerator/lazy.rb +11 -0
  26. data/lib/polyfill/v2_4/enumerator/lazy/instance.rb +15 -0
  27. data/lib/polyfill/v2_4/enumerator/lazy/instance/chunk_while.rb +25 -0
  28. data/lib/polyfill/v2_4/enumerator/lazy/instance/uniq.rb +33 -0
  29. data/lib/polyfill/v2_4/file.rb +1 -1
  30. data/lib/polyfill/v2_4/file/class.rb +1 -1
  31. data/lib/polyfill/v2_4/file/class/empty_q.rb +5 -7
  32. data/lib/polyfill/v2_4/float.rb +1 -1
  33. data/lib/polyfill/v2_4/float/instance.rb +3 -3
  34. data/lib/polyfill/v2_4/float/instance/ceil.rb +8 -10
  35. data/lib/polyfill/v2_4/float/instance/floor.rb +7 -9
  36. data/lib/polyfill/v2_4/float/instance/truncate.rb +8 -10
  37. data/lib/polyfill/v2_4/hash.rb +1 -1
  38. data/lib/polyfill/v2_4/hash/instance.rb +4 -4
  39. data/lib/polyfill/v2_4/hash/instance/compact.rb +5 -7
  40. data/lib/polyfill/v2_4/hash/instance/compact_e.rb +5 -7
  41. data/lib/polyfill/v2_4/hash/instance/transform_values.rb +6 -8
  42. data/lib/polyfill/v2_4/hash/instance/transform_values_e.rb +6 -8
  43. data/lib/polyfill/v2_4/i_p_addr.rb +9 -0
  44. data/lib/polyfill/v2_4/i_p_addr/instance.rb +13 -0
  45. data/lib/polyfill/v2_4/i_p_addr/instance/equalequal.rb +27 -0
  46. data/lib/polyfill/v2_4/i_p_addr/instance/lessthanequalgreaterthan.rb +27 -0
  47. data/lib/polyfill/v2_4/integer.rb +1 -1
  48. data/lib/polyfill/v2_4/integer/instance.rb +5 -5
  49. data/lib/polyfill/v2_4/integer/instance/ceil.rb +7 -9
  50. data/lib/polyfill/v2_4/integer/instance/digits.rb +5 -7
  51. data/lib/polyfill/v2_4/integer/instance/floor.rb +7 -9
  52. data/lib/polyfill/v2_4/integer/instance/round.rb +7 -9
  53. data/lib/polyfill/v2_4/integer/instance/truncate.rb +7 -9
  54. data/lib/polyfill/v2_4/io.rb +2 -2
  55. data/lib/polyfill/v2_4/io/class.rb +2 -2
  56. data/lib/polyfill/v2_4/io/class/foreach.rb +21 -33
  57. data/lib/polyfill/v2_4/io/class/readlines.rb +12 -13
  58. data/lib/polyfill/v2_4/io/instance.rb +6 -4
  59. data/lib/polyfill/v2_4/io/instance/each_line.rb +20 -33
  60. data/lib/polyfill/v2_4/io/instance/gets.rb +12 -13
  61. data/lib/polyfill/v2_4/io/instance/lines.rb +54 -0
  62. data/lib/polyfill/v2_4/io/instance/readline.rb +12 -13
  63. data/lib/polyfill/v2_4/io/instance/readlines.rb +12 -13
  64. data/lib/polyfill/v2_4/match_data.rb +1 -1
  65. data/lib/polyfill/v2_4/match_data/instance.rb +2 -2
  66. data/lib/polyfill/v2_4/match_data/instance/named_captures.rb +5 -7
  67. data/lib/polyfill/v2_4/match_data/instance/values_at.rb +5 -7
  68. data/lib/polyfill/v2_4/numeric.rb +1 -1
  69. data/lib/polyfill/v2_4/numeric/instance.rb +6 -2
  70. data/lib/polyfill/v2_4/numeric/instance/clone.rb +23 -0
  71. data/lib/polyfill/v2_4/numeric/instance/dup.rb +23 -0
  72. data/lib/polyfill/v2_4/numeric/instance/finite_q.rb +5 -7
  73. data/lib/polyfill/v2_4/numeric/instance/infinite_q.rb +5 -7
  74. data/lib/polyfill/v2_4/object.rb +9 -0
  75. data/lib/polyfill/v2_4/object/instance.rb +11 -0
  76. data/lib/polyfill/v2_4/object/instance/clone.rb +29 -0
  77. data/lib/polyfill/v2_4/pathname.rb +9 -0
  78. data/lib/polyfill/v2_4/pathname/instance.rb +11 -0
  79. data/lib/polyfill/v2_4/pathname/instance/empty_q.rb +29 -0
  80. data/lib/polyfill/v2_4/regexp.rb +9 -0
  81. data/lib/polyfill/v2_4/regexp/instance.rb +11 -0
  82. data/lib/polyfill/v2_4/regexp/instance/match_q.rb +23 -0
  83. data/lib/polyfill/v2_4/string.rb +3 -1
  84. data/lib/polyfill/v2_4/string/class.rb +11 -0
  85. data/lib/polyfill/v2_4/string/class/new.rb +26 -0
  86. data/lib/polyfill/v2_4/string/instance.rb +12 -2
  87. data/lib/polyfill/v2_4/string/instance/casecmp_q.rb +23 -0
  88. data/lib/polyfill/v2_4/string/instance/concat.rb +5 -7
  89. data/lib/polyfill/v2_4/string/instance/each_line.rb +17 -0
  90. data/lib/polyfill/v2_4/string/instance/lines.rb +55 -0
  91. data/lib/polyfill/v2_4/string/instance/match_q.rb +23 -0
  92. data/lib/polyfill/v2_4/string/instance/prepend.rb +5 -7
  93. data/lib/polyfill/v2_4/string/instance/unpack1.rb +23 -0
  94. data/lib/polyfill/v2_4/string_io.rb +1 -1
  95. data/lib/polyfill/v2_4/string_io/instance.rb +4 -4
  96. data/lib/polyfill/v2_4/string_io/instance/each_line.rb +5 -7
  97. data/lib/polyfill/v2_4/string_io/instance/gets.rb +5 -7
  98. data/lib/polyfill/v2_4/string_io/instance/readline.rb +5 -7
  99. data/lib/polyfill/v2_4/string_io/instance/readlines.rb +5 -7
  100. data/lib/polyfill/v2_4/symbol.rb +9 -0
  101. data/lib/polyfill/v2_4/symbol/instance.rb +15 -0
  102. data/lib/polyfill/v2_4/symbol/instance/casecmp_q.rb +25 -0
  103. data/lib/polyfill/v2_4/symbol/instance/match.rb +27 -0
  104. data/lib/polyfill/v2_4/symbol/instance/match_q.rb +17 -0
  105. data/lib/polyfill/version.rb +1 -1
  106. data/polyfill.gemspec +1 -0
  107. metadata +56 -3
@@ -1,4 +1,4 @@
1
- require 'polyfill/v2_4/file/class'
1
+ require_relative 'file/class'
2
2
 
3
3
  module Polyfill
4
4
  module V2_4
@@ -1,4 +1,4 @@
1
- require 'polyfill/v2_4/file/class/empty_q'
1
+ require_relative 'class/empty_q'
2
2
 
3
3
  module Polyfill
4
4
  module V2_4
@@ -9,14 +9,12 @@ module Polyfill
9
9
  end
10
10
  end
11
11
 
12
- if RUBY_VERSION < '2.4.0'
13
- refine ::File.singleton_class do
14
- include Method
15
- end
12
+ refine ::File.singleton_class do
13
+ include Method
14
+ end
16
15
 
17
- def self.included(base)
18
- base.include Method
19
- end
16
+ def self.included(base)
17
+ base.include Method
20
18
  end
21
19
  end
22
20
  end
@@ -1,4 +1,4 @@
1
- require 'polyfill/v2_4/float/instance'
1
+ require_relative 'float/instance'
2
2
 
3
3
  module Polyfill
4
4
  module V2_4
@@ -1,6 +1,6 @@
1
- require 'polyfill/v2_4/float/instance/ceil'
2
- require 'polyfill/v2_4/float/instance/floor'
3
- require 'polyfill/v2_4/float/instance/truncate'
1
+ require_relative 'instance/ceil'
2
+ require_relative 'instance/floor'
3
+ require_relative 'instance/truncate'
4
4
 
5
5
  module Polyfill
6
6
  module V2_4
@@ -9,23 +9,21 @@ module Polyfill
9
9
  return super() if ndigits == 0
10
10
 
11
11
  if ndigits > 0
12
- place = 10 ** ndigits
12
+ place = 10**ndigits
13
13
  (self * place).ceil / place.to_f
14
14
  else
15
- place = 10 ** -ndigits
16
- (self.to_f / place).ceil * place
15
+ place = 10**-ndigits
16
+ (self / place).ceil * place
17
17
  end
18
18
  end
19
19
  end
20
20
 
21
- if RUBY_VERSION < '2.4.0'
22
- refine ::Float do
23
- include Method
24
- end
21
+ refine ::Float do
22
+ include Method
23
+ end
25
24
 
26
- def self.included(base)
27
- base.include Method
28
- end
25
+ def self.included(base)
26
+ base.include Method
29
27
  end
30
28
  end
31
29
  end
@@ -9,23 +9,21 @@ module Polyfill
9
9
  return super() if ndigits == 0
10
10
 
11
11
  if ndigits > 0
12
- place = 10 ** ndigits
12
+ place = 10**ndigits
13
13
  (self * place).floor / place.to_f
14
14
  else
15
- place = 10 ** -ndigits
15
+ place = 10**-ndigits
16
16
  (self / place).floor * place
17
17
  end
18
18
  end
19
19
  end
20
20
 
21
- if RUBY_VERSION < '2.4.0'
22
- refine ::Float do
23
- include Method
24
- end
21
+ refine ::Float do
22
+ include Method
23
+ end
25
24
 
26
- def self.included(base)
27
- base.include Method
28
- end
25
+ def self.included(base)
26
+ base.include Method
29
27
  end
30
28
  end
31
29
  end
@@ -9,23 +9,21 @@ module Polyfill
9
9
  return super() if ndigits == 0
10
10
 
11
11
  if ndigits > 0
12
- place = 10 ** ndigits
12
+ place = 10**ndigits
13
13
  (self * place).truncate / place.to_f
14
14
  else
15
- place = 10 ** -ndigits
16
- (self.to_f / place).truncate * place
15
+ place = 10**-ndigits
16
+ (self / place).truncate * place
17
17
  end
18
18
  end
19
19
  end
20
20
 
21
- if RUBY_VERSION < '2.4.0'
22
- refine ::Float do
23
- include Method
24
- end
21
+ refine ::Float do
22
+ include Method
23
+ end
25
24
 
26
- def self.included(base)
27
- base.include Method
28
- end
25
+ def self.included(base)
26
+ base.include Method
29
27
  end
30
28
  end
31
29
  end
@@ -1,4 +1,4 @@
1
- require 'polyfill/v2_4/hash/instance'
1
+ require_relative 'hash/instance'
2
2
 
3
3
  module Polyfill
4
4
  module V2_4
@@ -1,7 +1,7 @@
1
- require 'polyfill/v2_4/hash/instance/compact'
2
- require 'polyfill/v2_4/hash/instance/compact_e'
3
- require 'polyfill/v2_4/hash/instance/transform_values'
4
- require 'polyfill/v2_4/hash/instance/transform_values_e'
1
+ require_relative 'instance/compact'
2
+ require_relative 'instance/compact_e'
3
+ require_relative 'instance/transform_values'
4
+ require_relative 'instance/transform_values_e'
5
5
 
6
6
  module Polyfill
7
7
  module V2_4
@@ -9,14 +9,12 @@ module Polyfill
9
9
  end
10
10
  end
11
11
 
12
- if RUBY_VERSION < '2.4.0'
13
- refine ::Hash do
14
- include Method
15
- end
12
+ refine ::Hash do
13
+ include Method
14
+ end
16
15
 
17
- def self.included(base)
18
- base.include Method
19
- end
16
+ def self.included(base)
17
+ base.include Method
20
18
  end
21
19
  end
22
20
  end
@@ -9,14 +9,12 @@ module Polyfill
9
9
  end
10
10
  end
11
11
 
12
- if RUBY_VERSION < '2.4.0'
13
- refine ::Hash do
14
- include Method
15
- end
12
+ refine ::Hash do
13
+ include Method
14
+ end
16
15
 
17
- def self.included(base)
18
- base.include Method
19
- end
16
+ def self.included(base)
17
+ base.include Method
20
18
  end
21
19
  end
22
20
  end
@@ -6,7 +6,7 @@ module Polyfill
6
6
  module Method
7
7
  def transform_values
8
8
  unless block_given?
9
- return Enumerator.new(keys.size) do |yielder|
9
+ return ::Enumerator.new(keys.size) do |yielder|
10
10
  each_with_object({}) do |(k, v), acc|
11
11
  acc[k] = yielder.yield(v)
12
12
  end
@@ -19,14 +19,12 @@ module Polyfill
19
19
  end
20
20
  end
21
21
 
22
- if RUBY_VERSION < '2.4.0'
23
- refine ::Hash do
24
- include Method
25
- end
22
+ refine ::Hash do
23
+ include Method
24
+ end
26
25
 
27
- def self.included(base)
28
- base.include Method
29
- end
26
+ def self.included(base)
27
+ base.include Method
30
28
  end
31
29
  end
32
30
  end
@@ -6,7 +6,7 @@ module Polyfill
6
6
  module Method
7
7
  def transform_values!
8
8
  unless block_given?
9
- return Enumerator.new(keys.size) do |yielder|
9
+ return ::Enumerator.new(keys.size) do |yielder|
10
10
  replace(each_with_object({}) do |(k, v), acc|
11
11
  acc[k] = yielder.yield(v)
12
12
  end)
@@ -19,14 +19,12 @@ module Polyfill
19
19
  end
20
20
  end
21
21
 
22
- if RUBY_VERSION < '2.4.0'
23
- refine ::Hash do
24
- include Method
25
- end
22
+ refine ::Hash do
23
+ include Method
24
+ end
26
25
 
27
- def self.included(base)
28
- base.include Method
29
- end
26
+ def self.included(base)
27
+ base.include Method
30
28
  end
31
29
  end
32
30
  end
@@ -0,0 +1,9 @@
1
+ require_relative 'i_p_addr/instance'
2
+
3
+ module Polyfill
4
+ module V2_4
5
+ module IPAddr
6
+ include Instance
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ require_relative 'instance/equalequal'
2
+ require_relative 'instance/lessthanequalgreaterthan'
3
+
4
+ module Polyfill
5
+ module V2_4
6
+ module IPAddr
7
+ module Instance
8
+ include Equalequal
9
+ include Lessthanequalgreaterthan
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,27 @@
1
+ require 'ipaddr'
2
+
3
+ module Polyfill
4
+ module V2_4
5
+ module IPAddr
6
+ module Instance
7
+ module Equalequal
8
+ module Method
9
+ def ==(*)
10
+ super
11
+ rescue
12
+ false
13
+ end
14
+ end
15
+
16
+ refine ::IPAddr do
17
+ include Method
18
+ end
19
+
20
+ def self.included(base)
21
+ base.include Method
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ require 'ipaddr'
2
+
3
+ module Polyfill
4
+ module V2_4
5
+ module IPAddr
6
+ module Instance
7
+ module Lessthanequalgreaterthan
8
+ module Method
9
+ def <=>(*)
10
+ super
11
+ rescue
12
+ nil
13
+ end
14
+ end
15
+
16
+ refine ::IPAddr do
17
+ include Method
18
+ end
19
+
20
+ def self.included(base)
21
+ base.include Method
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,4 +1,4 @@
1
- require 'polyfill/v2_4/integer/instance'
1
+ require_relative 'integer/instance'
2
2
 
3
3
  module Polyfill
4
4
  module V2_4
@@ -1,8 +1,8 @@
1
- require 'polyfill/v2_4/integer/instance/ceil'
2
- require 'polyfill/v2_4/integer/instance/digits'
3
- require 'polyfill/v2_4/integer/instance/floor'
4
- require 'polyfill/v2_4/integer/instance/round'
5
- require 'polyfill/v2_4/integer/instance/truncate'
1
+ require_relative 'instance/ceil'
2
+ require_relative 'instance/digits'
3
+ require_relative 'instance/floor'
4
+ require_relative 'instance/round'
5
+ require_relative 'instance/truncate'
6
6
 
7
7
  module Polyfill
8
8
  module V2_4
@@ -9,19 +9,17 @@ module Polyfill
9
9
  return super() if ndigits == 0
10
10
  return to_f if ndigits > 0
11
11
 
12
- place = 10 ** -ndigits
13
- (self.to_f / place).ceil * place
12
+ place = 10**-ndigits
13
+ (to_f / place).ceil * place
14
14
  end
15
15
  end
16
16
 
17
- if RUBY_VERSION < '2.4.0'
18
- refine ::Integer do
19
- include Method
20
- end
17
+ refine ::Integer do
18
+ include Method
19
+ end
21
20
 
22
- def self.included(base)
23
- base.include Method
24
- end
21
+ def self.included(base)
22
+ base.include Method
25
23
  end
26
24
  end
27
25
  end
@@ -20,14 +20,12 @@ module Polyfill
20
20
  end
21
21
  end
22
22
 
23
- if RUBY_VERSION < '2.4.0'
24
- refine ::Integer do
25
- include Method
26
- end
23
+ refine ::Integer do
24
+ include Method
25
+ end
27
26
 
28
- def self.included(base)
29
- base.include Method
30
- end
27
+ def self.included(base)
28
+ base.include Method
31
29
  end
32
30
  end
33
31
  end
@@ -9,19 +9,17 @@ module Polyfill
9
9
  return super() if ndigits == 0
10
10
  return to_f if ndigits > 0
11
11
 
12
- place = 10 ** -ndigits
13
- (self.to_f / place).floor * place
12
+ place = 10**-ndigits
13
+ (to_f / place).floor * place
14
14
  end
15
15
  end
16
16
 
17
- if RUBY_VERSION < '2.4.0'
18
- refine ::Integer do
19
- include Method
20
- end
17
+ refine ::Integer do
18
+ include Method
19
+ end
21
20
 
22
- def self.included(base)
23
- base.include Method
24
- end
21
+ def self.included(base)
22
+ base.include Method
25
23
  end
26
24
  end
27
25
  end