polyfill 0.6.0 → 0.7.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 (136) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.travis.yml +3 -2
  4. data/CHANGELOG.md +26 -10
  5. data/CONTRIBUTING.md +0 -2
  6. data/README.md +107 -28
  7. data/lib/polyfill.rb +168 -74
  8. data/lib/polyfill/utils.rb +8 -3
  9. data/lib/polyfill/v2_2.rb +9 -0
  10. data/lib/polyfill/v2_2/enumerable.rb +34 -0
  11. data/lib/polyfill/v2_2/kernel.rb +9 -0
  12. data/lib/polyfill/v2_3.rb +2 -0
  13. data/lib/polyfill/v2_3/array.rb +22 -3
  14. data/lib/polyfill/v2_3/enumerable.rb +48 -3
  15. data/lib/polyfill/v2_3/enumerator/lazy.rb +7 -3
  16. data/lib/polyfill/v2_3/hash.rb +39 -3
  17. data/lib/polyfill/v2_3/kernel.rb +17 -0
  18. data/lib/polyfill/v2_3/string.rb +23 -5
  19. data/lib/polyfill/v2_3/struct.rb +22 -3
  20. data/lib/polyfill/v2_4/array.rb +25 -3
  21. data/lib/polyfill/v2_4/comparable.rb +9 -3
  22. data/lib/polyfill/v2_4/dir.rb +5 -3
  23. data/lib/polyfill/v2_4/enumerable.rb +28 -3
  24. data/lib/polyfill/v2_4/enumerator/lazy.rb +15 -3
  25. data/lib/polyfill/v2_4/file.rb +5 -3
  26. data/lib/polyfill/v2_4/float.rb +38 -3
  27. data/lib/polyfill/v2_4/hash.rb +35 -3
  28. data/lib/polyfill/v2_4/i_p_addr.rb +11 -3
  29. data/lib/polyfill/v2_4/integer.rb +53 -3
  30. data/lib/polyfill/v2_4/io.rb +166 -4
  31. data/lib/polyfill/v2_4/match_data.rb +11 -3
  32. data/lib/polyfill/v2_4/numeric.rb +15 -3
  33. data/lib/polyfill/v2_4/object.rb +9 -3
  34. data/lib/polyfill/v2_4/pathname.rb +7 -3
  35. data/lib/polyfill/v2_4/regexp.rb +3 -3
  36. data/lib/polyfill/v2_4/string.rb +110 -4
  37. data/lib/polyfill/v2_4/string_io.rb +166 -2
  38. data/lib/polyfill/v2_4/symbol.rb +17 -3
  39. data/lib/polyfill/version.rb +1 -1
  40. data/polyfill.gemspec +1 -1
  41. metadata +7 -98
  42. data/lib/polyfill/v2_3/array/instance.rb +0 -11
  43. data/lib/polyfill/v2_3/array/instance/dig.rb +0 -42
  44. data/lib/polyfill/v2_3/enumerable/instance.rb +0 -15
  45. data/lib/polyfill/v2_3/enumerable/instance/chunk_while.rb +0 -70
  46. data/lib/polyfill/v2_3/enumerable/instance/grep_v.rb +0 -48
  47. data/lib/polyfill/v2_3/enumerable/instance/slice_before.rb +0 -48
  48. data/lib/polyfill/v2_3/enumerator/lazy/instance.rb +0 -13
  49. data/lib/polyfill/v2_3/enumerator/lazy/instance/grep_v.rb +0 -31
  50. data/lib/polyfill/v2_3/hash/instance.rb +0 -15
  51. data/lib/polyfill/v2_3/hash/instance/dig.rb +0 -17
  52. data/lib/polyfill/v2_3/hash/instance/fetch_values.rb +0 -32
  53. data/lib/polyfill/v2_3/hash/instance/to_proc.rb +0 -23
  54. data/lib/polyfill/v2_3/string/class.rb +0 -11
  55. data/lib/polyfill/v2_3/string/class/new.rb +0 -33
  56. data/lib/polyfill/v2_3/string/instance.rb +0 -13
  57. data/lib/polyfill/v2_3/string/instance/minus_unary.rb +0 -23
  58. data/lib/polyfill/v2_3/string/instance/plus_unary.rb +0 -23
  59. data/lib/polyfill/v2_3/struct/instance.rb +0 -11
  60. data/lib/polyfill/v2_3/struct/instance/dig.rb +0 -17
  61. data/lib/polyfill/v2_4/array/instance.rb +0 -13
  62. data/lib/polyfill/v2_4/array/instance/concat.rb +0 -30
  63. data/lib/polyfill/v2_4/array/instance/sum.rb +0 -17
  64. data/lib/polyfill/v2_4/comparable/instance.rb +0 -11
  65. data/lib/polyfill/v2_4/comparable/instance/clamp.rb +0 -35
  66. data/lib/polyfill/v2_4/dir/class.rb +0 -11
  67. data/lib/polyfill/v2_4/dir/class/empty_q.rb +0 -23
  68. data/lib/polyfill/v2_4/enumerable/instance.rb +0 -15
  69. data/lib/polyfill/v2_4/enumerable/instance/chunk.rb +0 -48
  70. data/lib/polyfill/v2_4/enumerable/instance/sum.rb +0 -52
  71. data/lib/polyfill/v2_4/enumerable/instance/uniq.rb +0 -45
  72. data/lib/polyfill/v2_4/enumerator/lazy/instance.rb +0 -15
  73. data/lib/polyfill/v2_4/enumerator/lazy/instance/chunk_while.rb +0 -29
  74. data/lib/polyfill/v2_4/enumerator/lazy/instance/uniq.rb +0 -33
  75. data/lib/polyfill/v2_4/file/class.rb +0 -11
  76. data/lib/polyfill/v2_4/file/class/empty_q.rb +0 -23
  77. data/lib/polyfill/v2_4/float/instance.rb +0 -15
  78. data/lib/polyfill/v2_4/float/instance/ceil.rb +0 -32
  79. data/lib/polyfill/v2_4/float/instance/floor.rb +0 -32
  80. data/lib/polyfill/v2_4/float/instance/truncate.rb +0 -32
  81. data/lib/polyfill/v2_4/hash/instance.rb +0 -17
  82. data/lib/polyfill/v2_4/hash/instance/compact.rb +0 -23
  83. data/lib/polyfill/v2_4/hash/instance/compact_e.rb +0 -23
  84. data/lib/polyfill/v2_4/hash/instance/transform_values.rb +0 -33
  85. data/lib/polyfill/v2_4/hash/instance/transform_values_e.rb +0 -33
  86. data/lib/polyfill/v2_4/i_p_addr/instance.rb +0 -13
  87. data/lib/polyfill/v2_4/i_p_addr/instance/equalequal.rb +0 -27
  88. data/lib/polyfill/v2_4/i_p_addr/instance/lessthanequalgreaterthan.rb +0 -27
  89. data/lib/polyfill/v2_4/integer/instance.rb +0 -19
  90. data/lib/polyfill/v2_4/integer/instance/ceil.rb +0 -28
  91. data/lib/polyfill/v2_4/integer/instance/digits.rb +0 -34
  92. data/lib/polyfill/v2_4/integer/instance/floor.rb +0 -28
  93. data/lib/polyfill/v2_4/integer/instance/round.rb +0 -31
  94. data/lib/polyfill/v2_4/integer/instance/truncate.rb +0 -28
  95. data/lib/polyfill/v2_4/io/class.rb +0 -13
  96. data/lib/polyfill/v2_4/io/class/foreach.rb +0 -55
  97. data/lib/polyfill/v2_4/io/class/readlines.rb +0 -37
  98. data/lib/polyfill/v2_4/io/instance.rb +0 -19
  99. data/lib/polyfill/v2_4/io/instance/each_line.rb +0 -54
  100. data/lib/polyfill/v2_4/io/instance/gets.rb +0 -37
  101. data/lib/polyfill/v2_4/io/instance/lines.rb +0 -54
  102. data/lib/polyfill/v2_4/io/instance/readline.rb +0 -37
  103. data/lib/polyfill/v2_4/io/instance/readlines.rb +0 -37
  104. data/lib/polyfill/v2_4/match_data/instance.rb +0 -13
  105. data/lib/polyfill/v2_4/match_data/instance/named_captures.rb +0 -25
  106. data/lib/polyfill/v2_4/match_data/instance/values_at.rb +0 -25
  107. data/lib/polyfill/v2_4/numeric/instance.rb +0 -17
  108. data/lib/polyfill/v2_4/numeric/instance/clone.rb +0 -23
  109. data/lib/polyfill/v2_4/numeric/instance/dup.rb +0 -23
  110. data/lib/polyfill/v2_4/numeric/instance/finite_q.rb +0 -23
  111. data/lib/polyfill/v2_4/numeric/instance/infinite_q.rb +0 -23
  112. data/lib/polyfill/v2_4/object/instance.rb +0 -11
  113. data/lib/polyfill/v2_4/object/instance/clone.rb +0 -29
  114. data/lib/polyfill/v2_4/pathname/instance.rb +0 -11
  115. data/lib/polyfill/v2_4/pathname/instance/empty_q.rb +0 -29
  116. data/lib/polyfill/v2_4/regexp/instance.rb +0 -11
  117. data/lib/polyfill/v2_4/regexp/instance/match_q.rb +0 -23
  118. data/lib/polyfill/v2_4/string/class.rb +0 -11
  119. data/lib/polyfill/v2_4/string/class/new.rb +0 -26
  120. data/lib/polyfill/v2_4/string/instance.rb +0 -23
  121. data/lib/polyfill/v2_4/string/instance/casecmp_q.rb +0 -23
  122. data/lib/polyfill/v2_4/string/instance/concat.rb +0 -30
  123. data/lib/polyfill/v2_4/string/instance/each_line.rb +0 -17
  124. data/lib/polyfill/v2_4/string/instance/lines.rb +0 -55
  125. data/lib/polyfill/v2_4/string/instance/match_q.rb +0 -23
  126. data/lib/polyfill/v2_4/string/instance/prepend.rb +0 -30
  127. data/lib/polyfill/v2_4/string/instance/unpack1.rb +0 -23
  128. data/lib/polyfill/v2_4/string_io/instance.rb +0 -17
  129. data/lib/polyfill/v2_4/string_io/instance/each_line.rb +0 -17
  130. data/lib/polyfill/v2_4/string_io/instance/gets.rb +0 -17
  131. data/lib/polyfill/v2_4/string_io/instance/readline.rb +0 -17
  132. data/lib/polyfill/v2_4/string_io/instance/readlines.rb +0 -17
  133. data/lib/polyfill/v2_4/symbol/instance.rb +0 -15
  134. data/lib/polyfill/v2_4/symbol/instance/casecmp_q.rb +0 -25
  135. data/lib/polyfill/v2_4/symbol/instance/match.rb +0 -27
  136. data/lib/polyfill/v2_4/symbol/instance/match_q.rb +0 -17
@@ -1,23 +0,0 @@
1
- module Polyfill
2
- module V2_3
3
- module String
4
- module Instance
5
- module PlusUnary
6
- module Method
7
- def +@
8
- frozen? ? dup : self
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
@@ -1,11 +0,0 @@
1
- require_relative 'instance/dig'
2
-
3
- module Polyfill
4
- module V2_3
5
- module Struct
6
- module Instance
7
- include Dig
8
- end
9
- end
10
- end
11
- end
@@ -1,17 +0,0 @@
1
- module Polyfill
2
- module V2_3
3
- module Struct
4
- module Instance
5
- module Dig
6
- refine ::Struct do
7
- include Array::Instance::Dig::Method
8
- end
9
-
10
- def self.included(base)
11
- base.include Array::Instance::Dig::Method
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,13 +0,0 @@
1
- require_relative 'instance/concat'
2
- require_relative 'instance/sum'
3
-
4
- module Polyfill
5
- module V2_4
6
- module Array
7
- module Instance
8
- include Concat
9
- include Sum
10
- end
11
- end
12
- end
13
- end
@@ -1,30 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Array
4
- module Instance
5
- module Concat
6
- module Method
7
- def concat(*others)
8
- return super if others.length == 1
9
-
10
- acc = [].concat(self)
11
- others.each do |other|
12
- acc.concat(other)
13
- end
14
-
15
- replace(acc)
16
- end
17
- end
18
-
19
- refine ::Array do
20
- include Method
21
- end
22
-
23
- def self.included(base)
24
- base.include Method
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,17 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Array
4
- module Instance
5
- module Sum
6
- refine ::Array do
7
- include Enumerable::Instance::Sum::Method
8
- end
9
-
10
- def self.included(base)
11
- base.include Enumerable::Instance::Sum::Method
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,11 +0,0 @@
1
- require_relative 'instance/clamp'
2
-
3
- module Polyfill
4
- module V2_4
5
- module Comparable
6
- module Instance
7
- include Clamp
8
- end
9
- end
10
- end
11
- end
@@ -1,35 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Comparable
4
- module Instance
5
- module Clamp
6
- module Method
7
- def clamp(min, max)
8
- if min > max
9
- raise ArgumentError, 'min argument must be smaller than max argument'
10
- end
11
-
12
- return min if min > self
13
- return max if max < self
14
- self
15
- end
16
- end
17
-
18
- refine ::Numeric do
19
- include Method
20
- end
21
- refine ::String do
22
- include Method
23
- end
24
- refine ::Time do
25
- include Method
26
- end
27
-
28
- def self.included(base)
29
- base.include Method
30
- end
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,11 +0,0 @@
1
- require_relative 'class/empty_q'
2
-
3
- module Polyfill
4
- module V2_4
5
- module Dir
6
- module Class
7
- include EmptyQ
8
- end
9
- end
10
- end
11
- end
@@ -1,23 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Dir
4
- module Class
5
- module EmptyQ
6
- module Method
7
- def empty?(path_name)
8
- exist?(path_name) && (entries(path_name) - ['.', '..']).empty?
9
- end
10
- end
11
-
12
- refine ::Dir.singleton_class 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,15 +0,0 @@
1
- require_relative 'instance/chunk'
2
- require_relative 'instance/sum'
3
- require_relative 'instance/uniq'
4
-
5
- module Polyfill
6
- module V2_4
7
- module Enumerable
8
- module Instance
9
- include Chunk
10
- include Sum
11
- include Uniq
12
- end
13
- end
14
- end
15
- end
@@ -1,48 +0,0 @@
1
- require 'stringio'
2
-
3
- module Polyfill
4
- module V2_4
5
- module Enumerable
6
- module Instance
7
- module Chunk
8
- module Method
9
- def chunk(*)
10
- return enum_for(:chunk) unless block_given?
11
-
12
- super
13
- end
14
- end
15
-
16
- refine ::Array do
17
- include Method
18
- end
19
- refine ::Dir do
20
- include Method
21
- end
22
- refine ::Enumerator do
23
- include Method
24
- end
25
- refine ::Hash do
26
- include Method
27
- end
28
- refine ::IO do
29
- include Method
30
- end
31
- refine ::Range do
32
- include Method
33
- end
34
- refine ::StringIO do
35
- include Method
36
- end
37
- refine ::Struct do
38
- include Method
39
- end
40
-
41
- def self.included(base)
42
- base.include Method
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,52 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Enumerable
4
- module Instance
5
- module Sum
6
- module Method
7
- def sum(init = 0)
8
- acc =
9
- begin
10
- init.dup
11
- rescue TypeError
12
- init
13
- end
14
-
15
- each do |elem|
16
- acc += block_given? ? yield(elem) : elem
17
- end
18
-
19
- acc
20
- end
21
- end
22
-
23
- refine ::Dir do
24
- include Method
25
- end
26
- refine ::Enumerator do
27
- include Method
28
- end
29
- refine ::Hash do
30
- include Method
31
- end
32
- refine ::IO do
33
- include Method
34
- end
35
- refine ::Range do
36
- include Method
37
- end
38
- refine ::StringIO do
39
- include Method
40
- end
41
- refine ::Struct do
42
- include Method
43
- end
44
-
45
- def self.included(base)
46
- base.include Method
47
- end
48
- end
49
- end
50
- end
51
- end
52
- end
@@ -1,45 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Enumerable
4
- module Instance
5
- module Uniq
6
- module Method
7
- def uniq
8
- if block_given?
9
- to_a.uniq(&::Proc.new)
10
- else
11
- to_a.uniq
12
- end
13
- end
14
- end
15
-
16
- refine ::Dir do
17
- include Method
18
- end
19
- refine ::Enumerator do
20
- include Method
21
- end
22
- refine ::Hash do
23
- include Method
24
- end
25
- refine ::IO do
26
- include Method
27
- end
28
- refine ::Range do
29
- include Method
30
- end
31
- refine ::StringIO do
32
- include Method
33
- end
34
- refine ::Struct do
35
- include Method
36
- end
37
-
38
- def self.included(base)
39
- base.include Method
40
- end
41
- end
42
- end
43
- end
44
- end
45
- end
@@ -1,15 +0,0 @@
1
- require_relative 'instance/chunk_while'
2
- require_relative 'instance/uniq'
3
-
4
- module Polyfill
5
- module V2_4
6
- module Enumerator
7
- module Lazy
8
- module Instance
9
- include ChunkWhile
10
- include Uniq
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,29 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Enumerator
4
- module Lazy
5
- module Instance
6
- module ChunkWhile
7
- module Method
8
- Utils.when_ruby_below('2.3') do
9
- using V2_3::Enumerable::Instance::ChunkWhile
10
- end
11
-
12
- def chunk_while
13
- super.lazy
14
- end
15
- end
16
-
17
- refine ::Enumerator::Lazy do
18
- include Method
19
- end
20
-
21
- def self.included(base)
22
- base.include Method
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,33 +0,0 @@
1
- require 'set'
2
-
3
- module Polyfill
4
- module V2_4
5
- module Enumerator
6
- module Lazy
7
- module Instance
8
- module Uniq
9
- module Method
10
- def uniq
11
- seen = Set.new
12
-
13
- ::Enumerator::Lazy.new(self) do |yielder, *values|
14
- result = block_given? ? yield(*values) : values
15
-
16
- yielder.<<(*values) if seen.add?(result)
17
- end
18
- end
19
- end
20
-
21
- refine ::Enumerator::Lazy do
22
- include Method
23
- end
24
-
25
- def self.included(base)
26
- base.include Method
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end