polyfill 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -1
  3. data/README.md +30 -44
  4. data/lib/polyfill.rb +63 -0
  5. data/lib/polyfill/v2_4.rb +8 -0
  6. data/lib/polyfill/v2_4/array.rb +2 -2
  7. data/lib/polyfill/v2_4/array/instance.rb +11 -0
  8. data/lib/polyfill/v2_4/array/instance/concat.rb +32 -0
  9. data/lib/polyfill/v2_4/comparable.rb +2 -2
  10. data/lib/polyfill/v2_4/comparable/instance.rb +11 -0
  11. data/lib/polyfill/v2_4/comparable/instance/clamp.rb +37 -0
  12. data/lib/polyfill/v2_4/dir.rb +9 -0
  13. data/lib/polyfill/v2_4/dir/class.rb +11 -0
  14. data/lib/polyfill/v2_4/dir/class/empty_q.rb +25 -0
  15. data/lib/polyfill/v2_4/file.rb +9 -0
  16. data/lib/polyfill/v2_4/file/class.rb +11 -0
  17. data/lib/polyfill/v2_4/file/class/empty_q.rb +25 -0
  18. data/lib/polyfill/v2_4/float.rb +2 -6
  19. data/lib/polyfill/v2_4/float/instance.rb +15 -0
  20. data/lib/polyfill/v2_4/float/instance/ceil.rb +34 -0
  21. data/lib/polyfill/v2_4/float/instance/floor.rb +34 -0
  22. data/lib/polyfill/v2_4/float/instance/truncate.rb +34 -0
  23. data/lib/polyfill/v2_4/hash.rb +2 -8
  24. data/lib/polyfill/v2_4/hash/instance.rb +17 -0
  25. data/lib/polyfill/v2_4/hash/instance/compact.rb +25 -0
  26. data/lib/polyfill/v2_4/hash/instance/compact_e.rb +25 -0
  27. data/lib/polyfill/v2_4/hash/instance/transform_values.rb +35 -0
  28. data/lib/polyfill/v2_4/hash/instance/transform_values_e.rb +35 -0
  29. data/lib/polyfill/v2_4/integer.rb +2 -10
  30. data/lib/polyfill/v2_4/integer/instance.rb +19 -0
  31. data/lib/polyfill/v2_4/integer/instance/ceil.rb +30 -0
  32. data/lib/polyfill/v2_4/integer/instance/digits.rb +36 -0
  33. data/lib/polyfill/v2_4/integer/instance/floor.rb +30 -0
  34. data/lib/polyfill/v2_4/integer/instance/round.rb +33 -0
  35. data/lib/polyfill/v2_4/integer/instance/truncate.rb +30 -0
  36. data/lib/polyfill/v2_4/io.rb +11 -0
  37. data/lib/polyfill/v2_4/io/class.rb +13 -0
  38. data/lib/polyfill/v2_4/io/class/foreach.rb +67 -0
  39. data/lib/polyfill/v2_4/io/class/readlines.rb +38 -0
  40. data/lib/polyfill/v2_4/io/instance.rb +17 -0
  41. data/lib/polyfill/v2_4/io/instance/each_line.rb +67 -0
  42. data/lib/polyfill/v2_4/io/instance/gets.rb +38 -0
  43. data/lib/polyfill/v2_4/io/instance/readline.rb +38 -0
  44. data/lib/polyfill/v2_4/io/instance/readlines.rb +38 -0
  45. data/lib/polyfill/v2_4/match_data.rb +2 -4
  46. data/lib/polyfill/v2_4/match_data/instance.rb +13 -0
  47. data/lib/polyfill/v2_4/match_data/instance/named_captures.rb +27 -0
  48. data/lib/polyfill/v2_4/match_data/instance/values_at.rb +27 -0
  49. data/lib/polyfill/v2_4/numeric.rb +2 -4
  50. data/lib/polyfill/v2_4/numeric/instance.rb +13 -0
  51. data/lib/polyfill/v2_4/numeric/instance/finite_q.rb +25 -0
  52. data/lib/polyfill/v2_4/numeric/instance/infinite_q.rb +25 -0
  53. data/lib/polyfill/v2_4/string.rb +2 -4
  54. data/lib/polyfill/v2_4/string/instance.rb +13 -0
  55. data/lib/polyfill/v2_4/string/instance/concat.rb +32 -0
  56. data/lib/polyfill/v2_4/string/instance/prepend.rb +32 -0
  57. data/lib/polyfill/v2_4/string_io.rb +9 -0
  58. data/lib/polyfill/v2_4/string_io/instance.rb +17 -0
  59. data/lib/polyfill/v2_4/string_io/instance/each_line.rb +19 -0
  60. data/lib/polyfill/v2_4/string_io/instance/gets.rb +19 -0
  61. data/lib/polyfill/v2_4/string_io/instance/readline.rb +19 -0
  62. data/lib/polyfill/v2_4/string_io/instance/readlines.rb +19 -0
  63. data/lib/polyfill/version.rb +1 -1
  64. metadata +51 -22
  65. data/lib/polyfill/v2_4/array/concat.rb +0 -26
  66. data/lib/polyfill/v2_4/comparable/clamp.rb +0 -31
  67. data/lib/polyfill/v2_4/float/ceil.rb +0 -28
  68. data/lib/polyfill/v2_4/float/floor.rb +0 -28
  69. data/lib/polyfill/v2_4/float/truncate.rb +0 -28
  70. data/lib/polyfill/v2_4/hash/compact.rb +0 -19
  71. data/lib/polyfill/v2_4/hash/compact_e.rb +0 -19
  72. data/lib/polyfill/v2_4/hash/transform_values.rb +0 -29
  73. data/lib/polyfill/v2_4/hash/transform_values_e.rb +0 -29
  74. data/lib/polyfill/v2_4/integer/ceil.rb +0 -24
  75. data/lib/polyfill/v2_4/integer/digits.rb +0 -30
  76. data/lib/polyfill/v2_4/integer/floor.rb +0 -24
  77. data/lib/polyfill/v2_4/integer/round.rb +0 -27
  78. data/lib/polyfill/v2_4/integer/truncate.rb +0 -24
  79. data/lib/polyfill/v2_4/match_data/named_captures.rb +0 -21
  80. data/lib/polyfill/v2_4/match_data/values_at.rb +0 -21
  81. data/lib/polyfill/v2_4/numeric/finite_q.rb +0 -19
  82. data/lib/polyfill/v2_4/numeric/infinite_q.rb +0 -19
  83. data/lib/polyfill/v2_4/string/concat.rb +0 -26
  84. data/lib/polyfill/v2_4/string/prepend.rb +0 -26
@@ -1,26 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Array
4
- module Concat
5
- module Method
6
- def concat(*others)
7
- return super if others.length == 1
8
-
9
- acc = [].concat(self)
10
- others.each do |other|
11
- acc.concat(other)
12
- end
13
-
14
- replace(acc)
15
- end if RUBY_VERSION < '2.4.0'
16
- end
17
-
18
- if RUBY_VERSION < '2.4.0'
19
- refine ::Array do
20
- include Method
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,31 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Comparable
4
- module Clamp
5
- module Method
6
- def clamp(min, max)
7
- if min > max
8
- raise ArgumentError, 'min argument must be smaller than max argument'
9
- end
10
-
11
- return min if min > self
12
- return max if max < self
13
- self
14
- end if RUBY_VERSION < '2.4.0'
15
- end
16
-
17
- if RUBY_VERSION < '2.4.0'
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
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,28 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Float
4
- module Ceil
5
- module Method
6
- def ceil(ndigits = 0)
7
- ndigits = ndigits.to_int
8
- return super() if ndigits == 0
9
-
10
- if ndigits > 0
11
- place = 10 ** ndigits
12
- (self * place).ceil / place.to_f
13
- else
14
- place = 10 ** -ndigits
15
- (self.to_f / place).ceil * place
16
- end
17
- end if RUBY_VERSION < '2.4.0'
18
- end
19
-
20
- if RUBY_VERSION < '2.4.0'
21
- refine ::Float do
22
- include Method
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Float
4
- module Floor
5
- module Method
6
- def floor(ndigits = 0)
7
- ndigits = ndigits.to_int
8
- return super() if ndigits == 0
9
-
10
- if ndigits > 0
11
- place = 10 ** ndigits
12
- (self * place).floor / place.to_f
13
- else
14
- place = 10 ** -ndigits
15
- (self / place).floor * place
16
- end
17
- end if RUBY_VERSION < '2.4.0'
18
- end
19
-
20
- if RUBY_VERSION < '2.4.0'
21
- refine ::Float do
22
- include Method
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Float
4
- module Truncate
5
- module Method
6
- def truncate(ndigits = 0)
7
- ndigits = ndigits.to_int
8
- return super() if ndigits == 0
9
-
10
- if ndigits > 0
11
- place = 10 ** ndigits
12
- (self * place).truncate / place.to_f
13
- else
14
- place = 10 ** -ndigits
15
- (self.to_f / place).truncate * place
16
- end
17
- end if RUBY_VERSION < '2.4.0'
18
- end
19
-
20
- if RUBY_VERSION < '2.4.0'
21
- refine ::Float do
22
- include Method
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,19 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Hash
4
- module Compact
5
- module Method
6
- def compact
7
- reject { |_, v| v.nil? }
8
- end if RUBY_VERSION < '2.4.0'
9
- end
10
-
11
- if RUBY_VERSION < '2.4.0'
12
- refine ::Hash do
13
- include Method
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,19 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Hash
4
- module CompactE
5
- module Method
6
- def compact!
7
- reject! { |_, v| v.nil? }
8
- end if RUBY_VERSION < '2.4.0'
9
- end
10
-
11
- if RUBY_VERSION < '2.4.0'
12
- refine ::Hash do
13
- include Method
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,29 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Hash
4
- module TransformValues
5
- module Method
6
- def transform_values
7
- unless block_given?
8
- return Enumerator.new(keys.size) do |yielder|
9
- each_with_object({}) do |(k, v), acc|
10
- acc[k] = yielder.yield(v)
11
- end
12
- end
13
- end
14
-
15
- each_with_object({}) do |(k, v), acc|
16
- acc[k] = yield(v)
17
- end
18
- end if RUBY_VERSION < '2.4.0'
19
- end
20
-
21
- if RUBY_VERSION < '2.4.0'
22
- refine ::Hash do
23
- include Method
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,29 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Hash
4
- module TransformValuesE
5
- module Method
6
- def transform_values!
7
- unless block_given?
8
- return Enumerator.new(keys.size) do |yielder|
9
- replace(each_with_object({}) do |(k, v), acc|
10
- acc[k] = yielder.yield(v)
11
- end)
12
- end
13
- end
14
-
15
- replace(each_with_object({}) do |(k, v), acc|
16
- acc[k] = yield(v)
17
- end)
18
- end if RUBY_VERSION < '2.4.0'
19
- end
20
-
21
- if RUBY_VERSION < '2.4.0'
22
- refine ::Hash do
23
- include Method
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,24 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Integer
4
- module Ceil
5
- module Method
6
- def ceil(ndigits = 0)
7
- ndigits = ndigits.to_int
8
- return super() if ndigits == 0
9
- return to_f if ndigits > 0
10
-
11
- place = 10 ** -ndigits
12
- (self.to_f / place).ceil * place
13
- end if RUBY_VERSION < '2.4.0'
14
- end
15
-
16
- if RUBY_VERSION < '2.4.0'
17
- refine ::Integer do
18
- include Method
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,30 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Integer
4
- module Digits
5
- module Method
6
- def digits(base = 10)
7
- base = base.to_int
8
- raise Math::DomainError, 'out of domain' if self < 0
9
- raise ArgumentError, 'negative radix' if base < 0
10
- raise ArgumentError, "invalid radix #{base}" if base < 2
11
-
12
- acc = []
13
- remainder = self
14
- while remainder > 0
15
- remainder, value = remainder.divmod(base)
16
- acc.push(value)
17
- end
18
- acc
19
- end if RUBY_VERSION < '2.4.0'
20
- end
21
-
22
- if RUBY_VERSION < '2.4.0'
23
- refine ::Integer do
24
- include Method
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,24 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Integer
4
- module Floor
5
- module Method
6
- def floor(ndigits = 0)
7
- ndigits = ndigits.to_int
8
- return super() if ndigits == 0
9
- return to_f if ndigits > 0
10
-
11
- place = 10 ** -ndigits
12
- (self.to_f / place).floor * place
13
- end if RUBY_VERSION < '2.4.0'
14
- end
15
-
16
- if RUBY_VERSION < '2.4.0'
17
- refine ::Integer do
18
- include Method
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,27 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Integer
4
- module Round
5
- module Method
6
- def round(ndigits = 0, half: nil)
7
- unless [nil, :down, :even, :up, 'down', 'even', 'up'].include?(half)
8
- raise ArgumentError, "invalid rounding mode: #{half}"
9
- end
10
- ndigits = ndigits.to_int
11
- return super() if ndigits == 0
12
- return to_f if ndigits > 0
13
-
14
- place = 10 ** -ndigits
15
- (self.to_f / place).round * place
16
- end if RUBY_VERSION < '2.4.0'
17
- end
18
-
19
- if RUBY_VERSION < '2.4.0'
20
- refine ::Integer do
21
- include Method
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,24 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Integer
4
- module Truncate
5
- module Method
6
- def truncate(ndigits = 0)
7
- ndigits = ndigits.to_int
8
- return super() if ndigits == 0
9
- return to_f if ndigits > 0
10
-
11
- place = 10 ** -ndigits
12
- (self.to_f / place).truncate * place
13
- end if RUBY_VERSION < '2.4.0'
14
- end
15
-
16
- if RUBY_VERSION < '2.4.0'
17
- refine ::Integer do
18
- include Method
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,21 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module MatchData
4
- module NamedCaptures
5
- module Method
6
- def named_captures
7
- names.each_with_object({}) do |name, acc|
8
- acc[name] = self[name]
9
- end
10
- end if RUBY_VERSION < '2.4.0'
11
- end
12
-
13
- if RUBY_VERSION < '2.4.0'
14
- refine ::MatchData do
15
- include Method
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,21 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module MatchData
4
- module ValuesAt
5
- module Method
6
- def values_at(*indexes)
7
- indexes.each_with_object([]) do |index, acc|
8
- acc.push(self[index])
9
- end
10
- end if RUBY_VERSION < '2.4.0'
11
- end
12
-
13
- if RUBY_VERSION < '2.4.0'
14
- refine ::MatchData do
15
- include Method
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,19 +0,0 @@
1
- module Polyfill
2
- module V2_4
3
- module Numeric
4
- module FiniteQ
5
- module Method
6
- def finite?
7
- true
8
- end if RUBY_VERSION < '2.4.0'
9
- end
10
-
11
- if RUBY_VERSION < '2.4.0'
12
- refine ::Numeric do
13
- include Method
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end