polyfill 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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