polyfill 0.2.0 → 0.3.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 (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