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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/.travis.yml +3 -2
- data/CHANGELOG.md +26 -10
- data/CONTRIBUTING.md +0 -2
- data/README.md +107 -28
- data/lib/polyfill.rb +168 -74
- data/lib/polyfill/utils.rb +8 -3
- data/lib/polyfill/v2_2.rb +9 -0
- data/lib/polyfill/v2_2/enumerable.rb +34 -0
- data/lib/polyfill/v2_2/kernel.rb +9 -0
- data/lib/polyfill/v2_3.rb +2 -0
- data/lib/polyfill/v2_3/array.rb +22 -3
- data/lib/polyfill/v2_3/enumerable.rb +48 -3
- data/lib/polyfill/v2_3/enumerator/lazy.rb +7 -3
- data/lib/polyfill/v2_3/hash.rb +39 -3
- data/lib/polyfill/v2_3/kernel.rb +17 -0
- data/lib/polyfill/v2_3/string.rb +23 -5
- data/lib/polyfill/v2_3/struct.rb +22 -3
- data/lib/polyfill/v2_4/array.rb +25 -3
- data/lib/polyfill/v2_4/comparable.rb +9 -3
- data/lib/polyfill/v2_4/dir.rb +5 -3
- data/lib/polyfill/v2_4/enumerable.rb +28 -3
- data/lib/polyfill/v2_4/enumerator/lazy.rb +15 -3
- data/lib/polyfill/v2_4/file.rb +5 -3
- data/lib/polyfill/v2_4/float.rb +38 -3
- data/lib/polyfill/v2_4/hash.rb +35 -3
- data/lib/polyfill/v2_4/i_p_addr.rb +11 -3
- data/lib/polyfill/v2_4/integer.rb +53 -3
- data/lib/polyfill/v2_4/io.rb +166 -4
- data/lib/polyfill/v2_4/match_data.rb +11 -3
- data/lib/polyfill/v2_4/numeric.rb +15 -3
- data/lib/polyfill/v2_4/object.rb +9 -3
- data/lib/polyfill/v2_4/pathname.rb +7 -3
- data/lib/polyfill/v2_4/regexp.rb +3 -3
- data/lib/polyfill/v2_4/string.rb +110 -4
- data/lib/polyfill/v2_4/string_io.rb +166 -2
- data/lib/polyfill/v2_4/symbol.rb +17 -3
- data/lib/polyfill/version.rb +1 -1
- data/polyfill.gemspec +1 -1
- metadata +7 -98
- data/lib/polyfill/v2_3/array/instance.rb +0 -11
- data/lib/polyfill/v2_3/array/instance/dig.rb +0 -42
- data/lib/polyfill/v2_3/enumerable/instance.rb +0 -15
- data/lib/polyfill/v2_3/enumerable/instance/chunk_while.rb +0 -70
- data/lib/polyfill/v2_3/enumerable/instance/grep_v.rb +0 -48
- data/lib/polyfill/v2_3/enumerable/instance/slice_before.rb +0 -48
- data/lib/polyfill/v2_3/enumerator/lazy/instance.rb +0 -13
- data/lib/polyfill/v2_3/enumerator/lazy/instance/grep_v.rb +0 -31
- data/lib/polyfill/v2_3/hash/instance.rb +0 -15
- data/lib/polyfill/v2_3/hash/instance/dig.rb +0 -17
- data/lib/polyfill/v2_3/hash/instance/fetch_values.rb +0 -32
- data/lib/polyfill/v2_3/hash/instance/to_proc.rb +0 -23
- data/lib/polyfill/v2_3/string/class.rb +0 -11
- data/lib/polyfill/v2_3/string/class/new.rb +0 -33
- data/lib/polyfill/v2_3/string/instance.rb +0 -13
- data/lib/polyfill/v2_3/string/instance/minus_unary.rb +0 -23
- data/lib/polyfill/v2_3/string/instance/plus_unary.rb +0 -23
- data/lib/polyfill/v2_3/struct/instance.rb +0 -11
- data/lib/polyfill/v2_3/struct/instance/dig.rb +0 -17
- data/lib/polyfill/v2_4/array/instance.rb +0 -13
- data/lib/polyfill/v2_4/array/instance/concat.rb +0 -30
- data/lib/polyfill/v2_4/array/instance/sum.rb +0 -17
- data/lib/polyfill/v2_4/comparable/instance.rb +0 -11
- data/lib/polyfill/v2_4/comparable/instance/clamp.rb +0 -35
- data/lib/polyfill/v2_4/dir/class.rb +0 -11
- data/lib/polyfill/v2_4/dir/class/empty_q.rb +0 -23
- data/lib/polyfill/v2_4/enumerable/instance.rb +0 -15
- data/lib/polyfill/v2_4/enumerable/instance/chunk.rb +0 -48
- data/lib/polyfill/v2_4/enumerable/instance/sum.rb +0 -52
- data/lib/polyfill/v2_4/enumerable/instance/uniq.rb +0 -45
- data/lib/polyfill/v2_4/enumerator/lazy/instance.rb +0 -15
- data/lib/polyfill/v2_4/enumerator/lazy/instance/chunk_while.rb +0 -29
- data/lib/polyfill/v2_4/enumerator/lazy/instance/uniq.rb +0 -33
- data/lib/polyfill/v2_4/file/class.rb +0 -11
- data/lib/polyfill/v2_4/file/class/empty_q.rb +0 -23
- data/lib/polyfill/v2_4/float/instance.rb +0 -15
- data/lib/polyfill/v2_4/float/instance/ceil.rb +0 -32
- data/lib/polyfill/v2_4/float/instance/floor.rb +0 -32
- data/lib/polyfill/v2_4/float/instance/truncate.rb +0 -32
- data/lib/polyfill/v2_4/hash/instance.rb +0 -17
- data/lib/polyfill/v2_4/hash/instance/compact.rb +0 -23
- data/lib/polyfill/v2_4/hash/instance/compact_e.rb +0 -23
- data/lib/polyfill/v2_4/hash/instance/transform_values.rb +0 -33
- data/lib/polyfill/v2_4/hash/instance/transform_values_e.rb +0 -33
- data/lib/polyfill/v2_4/i_p_addr/instance.rb +0 -13
- data/lib/polyfill/v2_4/i_p_addr/instance/equalequal.rb +0 -27
- data/lib/polyfill/v2_4/i_p_addr/instance/lessthanequalgreaterthan.rb +0 -27
- data/lib/polyfill/v2_4/integer/instance.rb +0 -19
- data/lib/polyfill/v2_4/integer/instance/ceil.rb +0 -28
- data/lib/polyfill/v2_4/integer/instance/digits.rb +0 -34
- data/lib/polyfill/v2_4/integer/instance/floor.rb +0 -28
- data/lib/polyfill/v2_4/integer/instance/round.rb +0 -31
- data/lib/polyfill/v2_4/integer/instance/truncate.rb +0 -28
- data/lib/polyfill/v2_4/io/class.rb +0 -13
- data/lib/polyfill/v2_4/io/class/foreach.rb +0 -55
- data/lib/polyfill/v2_4/io/class/readlines.rb +0 -37
- data/lib/polyfill/v2_4/io/instance.rb +0 -19
- data/lib/polyfill/v2_4/io/instance/each_line.rb +0 -54
- data/lib/polyfill/v2_4/io/instance/gets.rb +0 -37
- data/lib/polyfill/v2_4/io/instance/lines.rb +0 -54
- data/lib/polyfill/v2_4/io/instance/readline.rb +0 -37
- data/lib/polyfill/v2_4/io/instance/readlines.rb +0 -37
- data/lib/polyfill/v2_4/match_data/instance.rb +0 -13
- data/lib/polyfill/v2_4/match_data/instance/named_captures.rb +0 -25
- data/lib/polyfill/v2_4/match_data/instance/values_at.rb +0 -25
- data/lib/polyfill/v2_4/numeric/instance.rb +0 -17
- data/lib/polyfill/v2_4/numeric/instance/clone.rb +0 -23
- data/lib/polyfill/v2_4/numeric/instance/dup.rb +0 -23
- data/lib/polyfill/v2_4/numeric/instance/finite_q.rb +0 -23
- data/lib/polyfill/v2_4/numeric/instance/infinite_q.rb +0 -23
- data/lib/polyfill/v2_4/object/instance.rb +0 -11
- data/lib/polyfill/v2_4/object/instance/clone.rb +0 -29
- data/lib/polyfill/v2_4/pathname/instance.rb +0 -11
- data/lib/polyfill/v2_4/pathname/instance/empty_q.rb +0 -29
- data/lib/polyfill/v2_4/regexp/instance.rb +0 -11
- data/lib/polyfill/v2_4/regexp/instance/match_q.rb +0 -23
- data/lib/polyfill/v2_4/string/class.rb +0 -11
- data/lib/polyfill/v2_4/string/class/new.rb +0 -26
- data/lib/polyfill/v2_4/string/instance.rb +0 -23
- data/lib/polyfill/v2_4/string/instance/casecmp_q.rb +0 -23
- data/lib/polyfill/v2_4/string/instance/concat.rb +0 -30
- data/lib/polyfill/v2_4/string/instance/each_line.rb +0 -17
- data/lib/polyfill/v2_4/string/instance/lines.rb +0 -55
- data/lib/polyfill/v2_4/string/instance/match_q.rb +0 -23
- data/lib/polyfill/v2_4/string/instance/prepend.rb +0 -30
- data/lib/polyfill/v2_4/string/instance/unpack1.rb +0 -23
- data/lib/polyfill/v2_4/string_io/instance.rb +0 -17
- data/lib/polyfill/v2_4/string_io/instance/each_line.rb +0 -17
- data/lib/polyfill/v2_4/string_io/instance/gets.rb +0 -17
- data/lib/polyfill/v2_4/string_io/instance/readline.rb +0 -17
- data/lib/polyfill/v2_4/string_io/instance/readlines.rb +0 -17
- data/lib/polyfill/v2_4/symbol/instance.rb +0 -15
- data/lib/polyfill/v2_4/symbol/instance/casecmp_q.rb +0 -25
- data/lib/polyfill/v2_4/symbol/instance/match.rb +0 -27
- data/lib/polyfill/v2_4/symbol/instance/match_q.rb +0 -17
@@ -1,42 +0,0 @@
|
|
1
|
-
module Polyfill
|
2
|
-
module V2_3
|
3
|
-
module Array
|
4
|
-
module Instance
|
5
|
-
module Dig
|
6
|
-
module Method
|
7
|
-
def dig(head, *rest)
|
8
|
-
[head, *rest].reduce(self) do |value, accessor|
|
9
|
-
next_value =
|
10
|
-
case value
|
11
|
-
when ::Array
|
12
|
-
value.at(accessor)
|
13
|
-
when ::Hash
|
14
|
-
value[accessor]
|
15
|
-
when ::Struct
|
16
|
-
value[accessor] if value.members.include?(accessor)
|
17
|
-
else
|
18
|
-
begin
|
19
|
-
break value.dig(*rest)
|
20
|
-
rescue NoMethodError
|
21
|
-
raise TypeError, "#{value.class} does not have a #dig method"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
break nil if next_value.nil?
|
26
|
-
next_value
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
refine ::Array do
|
32
|
-
include Method
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.included(base)
|
36
|
-
base.include Method
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require_relative 'instance/chunk_while'
|
2
|
-
require_relative 'instance/grep_v'
|
3
|
-
require_relative 'instance/slice_before'
|
4
|
-
|
5
|
-
module Polyfill
|
6
|
-
module V2_3
|
7
|
-
module Enumerable
|
8
|
-
module Instance
|
9
|
-
include ChunkWhile
|
10
|
-
include GrepV
|
11
|
-
include SliceBefore
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
require 'stringio'
|
2
|
-
|
3
|
-
module Polyfill
|
4
|
-
module V2_3
|
5
|
-
module Enumerable
|
6
|
-
module Instance
|
7
|
-
module ChunkWhile
|
8
|
-
module Method
|
9
|
-
def chunk_while
|
10
|
-
block = ::Proc.new
|
11
|
-
|
12
|
-
return [self] if size == 1
|
13
|
-
|
14
|
-
::Enumerator.new do |yielder|
|
15
|
-
output = []
|
16
|
-
each_cons(2).with_index(1) do |(a, b), run|
|
17
|
-
if run == size - 1
|
18
|
-
if block.call(a, b)
|
19
|
-
output.push(a, b)
|
20
|
-
yielder << output
|
21
|
-
else
|
22
|
-
output.push(a)
|
23
|
-
yielder << output
|
24
|
-
yielder << [b]
|
25
|
-
end
|
26
|
-
else
|
27
|
-
output.push(a)
|
28
|
-
unless block.call(a, b)
|
29
|
-
yielder << output
|
30
|
-
output = []
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
refine ::Array do
|
39
|
-
include Method
|
40
|
-
end
|
41
|
-
refine ::Dir do
|
42
|
-
include Method
|
43
|
-
end
|
44
|
-
refine ::Enumerator do
|
45
|
-
include Method
|
46
|
-
end
|
47
|
-
refine ::Hash do
|
48
|
-
include Method
|
49
|
-
end
|
50
|
-
refine ::IO do
|
51
|
-
include Method
|
52
|
-
end
|
53
|
-
refine ::Range do
|
54
|
-
include Method
|
55
|
-
end
|
56
|
-
refine ::StringIO do
|
57
|
-
include Method
|
58
|
-
end
|
59
|
-
refine ::Struct do
|
60
|
-
include Method
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.included(base)
|
64
|
-
base.include Method
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'stringio'
|
2
|
-
|
3
|
-
module Polyfill
|
4
|
-
module V2_3
|
5
|
-
module Enumerable
|
6
|
-
module Instance
|
7
|
-
module GrepV
|
8
|
-
module Method
|
9
|
-
def grep_v(pattern)
|
10
|
-
output = to_a - grep(pattern)
|
11
|
-
output.map!(&::Proc.new) if block_given?
|
12
|
-
output
|
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,48 +0,0 @@
|
|
1
|
-
module Polyfill
|
2
|
-
module V2_3
|
3
|
-
module Enumerable
|
4
|
-
module Instance
|
5
|
-
module SliceBefore
|
6
|
-
module Method
|
7
|
-
def slice_before(*args)
|
8
|
-
if !args.empty? && block_given?
|
9
|
-
raise ArgumentError, 'wrong number of arguments (given 1, expected 0)'
|
10
|
-
end
|
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,31 +0,0 @@
|
|
1
|
-
module Polyfill
|
2
|
-
module V2_3
|
3
|
-
module Enumerator
|
4
|
-
module Lazy
|
5
|
-
module Instance
|
6
|
-
module GrepV
|
7
|
-
module Method
|
8
|
-
using V2_3::Enumerable::Instance::GrepV
|
9
|
-
|
10
|
-
def grep_v(pattern)
|
11
|
-
::Enumerator::Lazy.new(self) do |yielder, element|
|
12
|
-
next if pattern === element # rubocop:disable Style/CaseEquality
|
13
|
-
|
14
|
-
yielder << (block_given? ? yield(element) : element)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
refine ::Enumerator::Lazy 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
|
31
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require_relative 'instance/dig'
|
2
|
-
require_relative 'instance/fetch_values'
|
3
|
-
require_relative 'instance/to_proc'
|
4
|
-
|
5
|
-
module Polyfill
|
6
|
-
module V2_3
|
7
|
-
module Hash
|
8
|
-
module Instance
|
9
|
-
include Dig
|
10
|
-
include FetchValues
|
11
|
-
include ToProc
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Polyfill
|
2
|
-
module V2_3
|
3
|
-
module Hash
|
4
|
-
module Instance
|
5
|
-
module Dig
|
6
|
-
refine ::Hash 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,32 +0,0 @@
|
|
1
|
-
module Polyfill
|
2
|
-
module V2_3
|
3
|
-
module Hash
|
4
|
-
module Instance
|
5
|
-
module FetchValues
|
6
|
-
module Method
|
7
|
-
def fetch_values(*keys)
|
8
|
-
keys.each_with_object([]) do |key, values|
|
9
|
-
value =
|
10
|
-
if block_given?
|
11
|
-
fetch(key, &::Proc.new)
|
12
|
-
else
|
13
|
-
fetch(key)
|
14
|
-
end
|
15
|
-
|
16
|
-
values << value
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
refine ::Hash 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
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Polyfill
|
2
|
-
module V2_3
|
3
|
-
module Hash
|
4
|
-
module Instance
|
5
|
-
module ToProc
|
6
|
-
module Method
|
7
|
-
def to_proc
|
8
|
-
method(:[]).to_proc
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
refine ::Hash 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,33 +0,0 @@
|
|
1
|
-
module Polyfill
|
2
|
-
module V2_3
|
3
|
-
module String
|
4
|
-
module Class
|
5
|
-
module New
|
6
|
-
module Method
|
7
|
-
def new(*args)
|
8
|
-
hash, others = args.partition { |arg| arg.is_a?(::Hash) }
|
9
|
-
hash = hash.first
|
10
|
-
encoding = hash && hash.delete(:encoding)
|
11
|
-
|
12
|
-
if hash && !hash.keys.empty?
|
13
|
-
raise ArgumentError, "unknown keyword: #{hash.keys.first}"
|
14
|
-
end
|
15
|
-
|
16
|
-
str = super(*others)
|
17
|
-
str.encode!(encoding) if encoding
|
18
|
-
str
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
refine ::String.singleton_class do
|
23
|
-
include Method
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.included(base)
|
27
|
-
base.include Method
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Polyfill
|
2
|
-
module V2_3
|
3
|
-
module String
|
4
|
-
module Instance
|
5
|
-
module MinusUnary
|
6
|
-
module Method
|
7
|
-
def -@
|
8
|
-
frozen? ? self : dup.freeze
|
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
|