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/match_data/instance'
1
+ require_relative 'match_data/instance'
2
2
 
3
3
  module Polyfill
4
4
  module V2_4
@@ -1,5 +1,5 @@
1
- require 'polyfill/v2_4/match_data/instance/named_captures'
2
- require 'polyfill/v2_4/match_data/instance/values_at'
1
+ require_relative 'instance/named_captures'
2
+ require_relative 'instance/values_at'
3
3
 
4
4
  module Polyfill
5
5
  module V2_4
@@ -11,14 +11,12 @@ module Polyfill
11
11
  end
12
12
  end
13
13
 
14
- if RUBY_VERSION < '2.4.0'
15
- refine ::MatchData do
16
- include Method
17
- end
14
+ refine ::MatchData do
15
+ include Method
16
+ end
18
17
 
19
- def self.included(base)
20
- base.include Method
21
- end
18
+ def self.included(base)
19
+ base.include Method
22
20
  end
23
21
  end
24
22
  end
@@ -11,14 +11,12 @@ module Polyfill
11
11
  end
12
12
  end
13
13
 
14
- if RUBY_VERSION < '2.4.0'
15
- refine ::MatchData do
16
- include Method
17
- end
14
+ refine ::MatchData do
15
+ include Method
16
+ end
18
17
 
19
- def self.included(base)
20
- base.include Method
21
- end
18
+ def self.included(base)
19
+ base.include Method
22
20
  end
23
21
  end
24
22
  end
@@ -1,4 +1,4 @@
1
- require 'polyfill/v2_4/numeric/instance'
1
+ require_relative 'numeric/instance'
2
2
 
3
3
  module Polyfill
4
4
  module V2_4
@@ -1,10 +1,14 @@
1
- require 'polyfill/v2_4/numeric/instance/finite_q'
2
- require 'polyfill/v2_4/numeric/instance/infinite_q'
1
+ require_relative 'instance/clone'
2
+ require_relative 'instance/dup'
3
+ require_relative 'instance/finite_q'
4
+ require_relative 'instance/infinite_q'
3
5
 
4
6
  module Polyfill
5
7
  module V2_4
6
8
  module Numeric
7
9
  module Instance
10
+ include Dup
11
+ include Clone
8
12
  include FiniteQ
9
13
  include InfiniteQ
10
14
  end
@@ -0,0 +1,23 @@
1
+ module Polyfill
2
+ module V2_4
3
+ module Numeric
4
+ module Instance
5
+ module Clone
6
+ module Method
7
+ def clone(freeze: true) # rubocop:disable Lint/UnusedMethodArgument
8
+ self
9
+ end
10
+ end
11
+
12
+ refine ::Numeric do
13
+ include Method
14
+ end
15
+
16
+ def self.included(base)
17
+ base.include Method
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module Polyfill
2
+ module V2_4
3
+ module Numeric
4
+ module Instance
5
+ module Dup
6
+ module Method
7
+ def dup
8
+ self
9
+ end
10
+ end
11
+
12
+ refine ::Numeric do
13
+ include Method
14
+ end
15
+
16
+ def self.included(base)
17
+ base.include Method
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -9,14 +9,12 @@ module Polyfill
9
9
  end
10
10
  end
11
11
 
12
- if RUBY_VERSION < '2.4.0'
13
- refine ::Numeric do
14
- include Method
15
- end
12
+ refine ::Numeric 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 ::Numeric do
14
- include Method
15
- end
12
+ refine ::Numeric 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
@@ -0,0 +1,9 @@
1
+ require_relative 'object/instance'
2
+
3
+ module Polyfill
4
+ module V2_4
5
+ module Object
6
+ include Instance
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ require_relative 'instance/clone'
2
+
3
+ module Polyfill
4
+ module V2_4
5
+ module Object
6
+ module Instance
7
+ include Clone
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,29 @@
1
+ module Polyfill
2
+ module V2_4
3
+ module Object
4
+ module Instance
5
+ module Clone
6
+ module Method
7
+ def clone(freeze: true)
8
+ return super() if freeze
9
+
10
+ cloned = dup
11
+ (singleton_class.ancestors - self.class.ancestors).drop(1).each do |ancestor|
12
+ cloned.extend(ancestor)
13
+ end
14
+ cloned
15
+ end
16
+ end
17
+
18
+ refine ::Object do
19
+ include Method
20
+ end
21
+
22
+ def self.included(base)
23
+ base.include Method
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,9 @@
1
+ require_relative 'pathname/instance'
2
+
3
+ module Polyfill
4
+ module V2_4
5
+ module Pathname
6
+ include Instance
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ require_relative 'instance/empty_q'
2
+
3
+ module Polyfill
4
+ module V2_4
5
+ module Pathname
6
+ module Instance
7
+ include EmptyQ
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,29 @@
1
+ require 'pathname'
2
+
3
+ module Polyfill
4
+ module V2_4
5
+ module Pathname
6
+ module Instance
7
+ module EmptyQ
8
+ module Method
9
+ def empty?
10
+ if directory?
11
+ children.empty?
12
+ else
13
+ zero?
14
+ end
15
+ end
16
+ end
17
+
18
+ refine ::Pathname do
19
+ include Method
20
+ end
21
+
22
+ def self.included(base)
23
+ base.include Method
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,9 @@
1
+ require_relative 'regexp/instance'
2
+
3
+ module Polyfill
4
+ module V2_4
5
+ module Regexp
6
+ include Instance
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ require_relative 'instance/match_q'
2
+
3
+ module Polyfill
4
+ module V2_4
5
+ module Regexp
6
+ module Instance
7
+ include MatchQ
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,23 @@
1
+ module Polyfill
2
+ module V2_4
3
+ module Regexp
4
+ module Instance
5
+ module MatchQ
6
+ module Method
7
+ def match?(string, position = 0)
8
+ !!(string[position..-1] =~ self)
9
+ end
10
+ end
11
+
12
+ refine ::Regexp do
13
+ include Method
14
+ end
15
+
16
+ def self.included(base)
17
+ base.include Method
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,8 +1,10 @@
1
- require 'polyfill/v2_4/string/instance'
1
+ require_relative 'string/class'
2
+ require_relative 'string/instance'
2
3
 
3
4
  module Polyfill
4
5
  module V2_4
5
6
  module String
7
+ include Class
6
8
  include Instance
7
9
  end
8
10
  end
@@ -0,0 +1,11 @@
1
+ require_relative 'class/new'
2
+
3
+ module Polyfill
4
+ module V2_4
5
+ module String
6
+ module Class
7
+ include New
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ module Polyfill
2
+ module V2_4
3
+ module String
4
+ module Class
5
+ module New
6
+ module Method
7
+ def new(*args)
8
+ hash = args.find { |arg| arg.is_a?(::Hash) }
9
+ hash && hash.delete(:capacity) if hash
10
+
11
+ super(*args)
12
+ end
13
+ end
14
+
15
+ refine ::String.singleton_class do
16
+ include Method
17
+ end
18
+
19
+ def self.included(base)
20
+ base.include Method
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,12 +1,22 @@
1
- require 'polyfill/v2_4/string/instance/concat'
2
- require 'polyfill/v2_4/string/instance/prepend'
1
+ require_relative 'instance/casecmp_q'
2
+ require_relative 'instance/concat'
3
+ require_relative 'instance/each_line'
4
+ require_relative 'instance/lines'
5
+ require_relative 'instance/match_q'
6
+ require_relative 'instance/prepend'
7
+ require_relative 'instance/unpack1'
3
8
 
4
9
  module Polyfill
5
10
  module V2_4
6
11
  module String
7
12
  module Instance
13
+ include CasecmpQ
8
14
  include Concat
15
+ include EachLine
16
+ include Lines
17
+ include MatchQ
9
18
  include Prepend
19
+ include Unpack1
10
20
  end
11
21
  end
12
22
  end
@@ -0,0 +1,23 @@
1
+ module Polyfill
2
+ module V2_4
3
+ module String
4
+ module Instance
5
+ module CasecmpQ
6
+ module Method
7
+ def casecmp?(other)
8
+ casecmp(other.to_str) == 0
9
+ end
10
+ end
11
+
12
+ refine ::String do
13
+ include Method
14
+ end
15
+
16
+ def self.included(base)
17
+ base.include Method
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -16,14 +16,12 @@ module Polyfill
16
16
  end
17
17
  end
18
18
 
19
- if RUBY_VERSION < '2.4.0'
20
- refine ::String do
21
- include Method
22
- end
19
+ refine ::String do
20
+ include Method
21
+ end
23
22
 
24
- def self.included(base)
25
- base.include Method
26
- end
23
+ def self.included(base)
24
+ base.include Method
27
25
  end
28
26
  end
29
27
  end