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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +23 -1
- data/README.md +30 -44
- data/lib/polyfill.rb +63 -0
- data/lib/polyfill/v2_4.rb +8 -0
- data/lib/polyfill/v2_4/array.rb +2 -2
- data/lib/polyfill/v2_4/array/instance.rb +11 -0
- data/lib/polyfill/v2_4/array/instance/concat.rb +32 -0
- data/lib/polyfill/v2_4/comparable.rb +2 -2
- data/lib/polyfill/v2_4/comparable/instance.rb +11 -0
- data/lib/polyfill/v2_4/comparable/instance/clamp.rb +37 -0
- data/lib/polyfill/v2_4/dir.rb +9 -0
- data/lib/polyfill/v2_4/dir/class.rb +11 -0
- data/lib/polyfill/v2_4/dir/class/empty_q.rb +25 -0
- data/lib/polyfill/v2_4/file.rb +9 -0
- data/lib/polyfill/v2_4/file/class.rb +11 -0
- data/lib/polyfill/v2_4/file/class/empty_q.rb +25 -0
- data/lib/polyfill/v2_4/float.rb +2 -6
- data/lib/polyfill/v2_4/float/instance.rb +15 -0
- data/lib/polyfill/v2_4/float/instance/ceil.rb +34 -0
- data/lib/polyfill/v2_4/float/instance/floor.rb +34 -0
- data/lib/polyfill/v2_4/float/instance/truncate.rb +34 -0
- data/lib/polyfill/v2_4/hash.rb +2 -8
- data/lib/polyfill/v2_4/hash/instance.rb +17 -0
- data/lib/polyfill/v2_4/hash/instance/compact.rb +25 -0
- data/lib/polyfill/v2_4/hash/instance/compact_e.rb +25 -0
- data/lib/polyfill/v2_4/hash/instance/transform_values.rb +35 -0
- data/lib/polyfill/v2_4/hash/instance/transform_values_e.rb +35 -0
- data/lib/polyfill/v2_4/integer.rb +2 -10
- data/lib/polyfill/v2_4/integer/instance.rb +19 -0
- data/lib/polyfill/v2_4/integer/instance/ceil.rb +30 -0
- data/lib/polyfill/v2_4/integer/instance/digits.rb +36 -0
- data/lib/polyfill/v2_4/integer/instance/floor.rb +30 -0
- data/lib/polyfill/v2_4/integer/instance/round.rb +33 -0
- data/lib/polyfill/v2_4/integer/instance/truncate.rb +30 -0
- data/lib/polyfill/v2_4/io.rb +11 -0
- data/lib/polyfill/v2_4/io/class.rb +13 -0
- data/lib/polyfill/v2_4/io/class/foreach.rb +67 -0
- data/lib/polyfill/v2_4/io/class/readlines.rb +38 -0
- data/lib/polyfill/v2_4/io/instance.rb +17 -0
- data/lib/polyfill/v2_4/io/instance/each_line.rb +67 -0
- data/lib/polyfill/v2_4/io/instance/gets.rb +38 -0
- data/lib/polyfill/v2_4/io/instance/readline.rb +38 -0
- data/lib/polyfill/v2_4/io/instance/readlines.rb +38 -0
- data/lib/polyfill/v2_4/match_data.rb +2 -4
- data/lib/polyfill/v2_4/match_data/instance.rb +13 -0
- data/lib/polyfill/v2_4/match_data/instance/named_captures.rb +27 -0
- data/lib/polyfill/v2_4/match_data/instance/values_at.rb +27 -0
- data/lib/polyfill/v2_4/numeric.rb +2 -4
- data/lib/polyfill/v2_4/numeric/instance.rb +13 -0
- data/lib/polyfill/v2_4/numeric/instance/finite_q.rb +25 -0
- data/lib/polyfill/v2_4/numeric/instance/infinite_q.rb +25 -0
- data/lib/polyfill/v2_4/string.rb +2 -4
- data/lib/polyfill/v2_4/string/instance.rb +13 -0
- data/lib/polyfill/v2_4/string/instance/concat.rb +32 -0
- data/lib/polyfill/v2_4/string/instance/prepend.rb +32 -0
- data/lib/polyfill/v2_4/string_io.rb +9 -0
- data/lib/polyfill/v2_4/string_io/instance.rb +17 -0
- data/lib/polyfill/v2_4/string_io/instance/each_line.rb +19 -0
- data/lib/polyfill/v2_4/string_io/instance/gets.rb +19 -0
- data/lib/polyfill/v2_4/string_io/instance/readline.rb +19 -0
- data/lib/polyfill/v2_4/string_io/instance/readlines.rb +19 -0
- data/lib/polyfill/version.rb +1 -1
- metadata +51 -22
- data/lib/polyfill/v2_4/array/concat.rb +0 -26
- data/lib/polyfill/v2_4/comparable/clamp.rb +0 -31
- data/lib/polyfill/v2_4/float/ceil.rb +0 -28
- data/lib/polyfill/v2_4/float/floor.rb +0 -28
- data/lib/polyfill/v2_4/float/truncate.rb +0 -28
- data/lib/polyfill/v2_4/hash/compact.rb +0 -19
- data/lib/polyfill/v2_4/hash/compact_e.rb +0 -19
- data/lib/polyfill/v2_4/hash/transform_values.rb +0 -29
- data/lib/polyfill/v2_4/hash/transform_values_e.rb +0 -29
- data/lib/polyfill/v2_4/integer/ceil.rb +0 -24
- data/lib/polyfill/v2_4/integer/digits.rb +0 -30
- data/lib/polyfill/v2_4/integer/floor.rb +0 -24
- data/lib/polyfill/v2_4/integer/round.rb +0 -27
- data/lib/polyfill/v2_4/integer/truncate.rb +0 -24
- data/lib/polyfill/v2_4/match_data/named_captures.rb +0 -21
- data/lib/polyfill/v2_4/match_data/values_at.rb +0 -21
- data/lib/polyfill/v2_4/numeric/finite_q.rb +0 -19
- data/lib/polyfill/v2_4/numeric/infinite_q.rb +0 -19
- data/lib/polyfill/v2_4/string/concat.rb +0 -26
- 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
|