polyfill 0.6.0 → 0.7.0

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