polyfill 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +35 -0
  3. data/CHANGELOG.md +31 -2
  4. data/CONTRIBUTING.md +48 -17
  5. data/README.md +110 -80
  6. data/Rakefile +3 -1
  7. data/bin/console +3 -3
  8. data/lib/polyfill.rb +30 -19
  9. data/lib/polyfill/v2_4.rb +29 -12
  10. data/lib/polyfill/v2_4/array.rb +1 -1
  11. data/lib/polyfill/v2_4/array/instance.rb +3 -1
  12. data/lib/polyfill/v2_4/array/instance/concat.rb +5 -7
  13. data/lib/polyfill/v2_4/array/instance/sum.rb +17 -0
  14. data/lib/polyfill/v2_4/comparable.rb +1 -1
  15. data/lib/polyfill/v2_4/comparable/instance.rb +1 -1
  16. data/lib/polyfill/v2_4/comparable/instance/clamp.rb +11 -13
  17. data/lib/polyfill/v2_4/dir.rb +1 -1
  18. data/lib/polyfill/v2_4/dir/class.rb +1 -1
  19. data/lib/polyfill/v2_4/dir/class/empty_q.rb +5 -7
  20. data/lib/polyfill/v2_4/enumerable.rb +9 -0
  21. data/lib/polyfill/v2_4/enumerable/instance.rb +15 -0
  22. data/lib/polyfill/v2_4/enumerable/instance/chunk.rb +46 -0
  23. data/lib/polyfill/v2_4/enumerable/instance/sum.rb +52 -0
  24. data/lib/polyfill/v2_4/enumerable/instance/uniq.rb +45 -0
  25. data/lib/polyfill/v2_4/enumerator/lazy.rb +11 -0
  26. data/lib/polyfill/v2_4/enumerator/lazy/instance.rb +15 -0
  27. data/lib/polyfill/v2_4/enumerator/lazy/instance/chunk_while.rb +25 -0
  28. data/lib/polyfill/v2_4/enumerator/lazy/instance/uniq.rb +33 -0
  29. data/lib/polyfill/v2_4/file.rb +1 -1
  30. data/lib/polyfill/v2_4/file/class.rb +1 -1
  31. data/lib/polyfill/v2_4/file/class/empty_q.rb +5 -7
  32. data/lib/polyfill/v2_4/float.rb +1 -1
  33. data/lib/polyfill/v2_4/float/instance.rb +3 -3
  34. data/lib/polyfill/v2_4/float/instance/ceil.rb +8 -10
  35. data/lib/polyfill/v2_4/float/instance/floor.rb +7 -9
  36. data/lib/polyfill/v2_4/float/instance/truncate.rb +8 -10
  37. data/lib/polyfill/v2_4/hash.rb +1 -1
  38. data/lib/polyfill/v2_4/hash/instance.rb +4 -4
  39. data/lib/polyfill/v2_4/hash/instance/compact.rb +5 -7
  40. data/lib/polyfill/v2_4/hash/instance/compact_e.rb +5 -7
  41. data/lib/polyfill/v2_4/hash/instance/transform_values.rb +6 -8
  42. data/lib/polyfill/v2_4/hash/instance/transform_values_e.rb +6 -8
  43. data/lib/polyfill/v2_4/i_p_addr.rb +9 -0
  44. data/lib/polyfill/v2_4/i_p_addr/instance.rb +13 -0
  45. data/lib/polyfill/v2_4/i_p_addr/instance/equalequal.rb +27 -0
  46. data/lib/polyfill/v2_4/i_p_addr/instance/lessthanequalgreaterthan.rb +27 -0
  47. data/lib/polyfill/v2_4/integer.rb +1 -1
  48. data/lib/polyfill/v2_4/integer/instance.rb +5 -5
  49. data/lib/polyfill/v2_4/integer/instance/ceil.rb +7 -9
  50. data/lib/polyfill/v2_4/integer/instance/digits.rb +5 -7
  51. data/lib/polyfill/v2_4/integer/instance/floor.rb +7 -9
  52. data/lib/polyfill/v2_4/integer/instance/round.rb +7 -9
  53. data/lib/polyfill/v2_4/integer/instance/truncate.rb +7 -9
  54. data/lib/polyfill/v2_4/io.rb +2 -2
  55. data/lib/polyfill/v2_4/io/class.rb +2 -2
  56. data/lib/polyfill/v2_4/io/class/foreach.rb +21 -33
  57. data/lib/polyfill/v2_4/io/class/readlines.rb +12 -13
  58. data/lib/polyfill/v2_4/io/instance.rb +6 -4
  59. data/lib/polyfill/v2_4/io/instance/each_line.rb +20 -33
  60. data/lib/polyfill/v2_4/io/instance/gets.rb +12 -13
  61. data/lib/polyfill/v2_4/io/instance/lines.rb +54 -0
  62. data/lib/polyfill/v2_4/io/instance/readline.rb +12 -13
  63. data/lib/polyfill/v2_4/io/instance/readlines.rb +12 -13
  64. data/lib/polyfill/v2_4/match_data.rb +1 -1
  65. data/lib/polyfill/v2_4/match_data/instance.rb +2 -2
  66. data/lib/polyfill/v2_4/match_data/instance/named_captures.rb +5 -7
  67. data/lib/polyfill/v2_4/match_data/instance/values_at.rb +5 -7
  68. data/lib/polyfill/v2_4/numeric.rb +1 -1
  69. data/lib/polyfill/v2_4/numeric/instance.rb +6 -2
  70. data/lib/polyfill/v2_4/numeric/instance/clone.rb +23 -0
  71. data/lib/polyfill/v2_4/numeric/instance/dup.rb +23 -0
  72. data/lib/polyfill/v2_4/numeric/instance/finite_q.rb +5 -7
  73. data/lib/polyfill/v2_4/numeric/instance/infinite_q.rb +5 -7
  74. data/lib/polyfill/v2_4/object.rb +9 -0
  75. data/lib/polyfill/v2_4/object/instance.rb +11 -0
  76. data/lib/polyfill/v2_4/object/instance/clone.rb +29 -0
  77. data/lib/polyfill/v2_4/pathname.rb +9 -0
  78. data/lib/polyfill/v2_4/pathname/instance.rb +11 -0
  79. data/lib/polyfill/v2_4/pathname/instance/empty_q.rb +29 -0
  80. data/lib/polyfill/v2_4/regexp.rb +9 -0
  81. data/lib/polyfill/v2_4/regexp/instance.rb +11 -0
  82. data/lib/polyfill/v2_4/regexp/instance/match_q.rb +23 -0
  83. data/lib/polyfill/v2_4/string.rb +3 -1
  84. data/lib/polyfill/v2_4/string/class.rb +11 -0
  85. data/lib/polyfill/v2_4/string/class/new.rb +26 -0
  86. data/lib/polyfill/v2_4/string/instance.rb +12 -2
  87. data/lib/polyfill/v2_4/string/instance/casecmp_q.rb +23 -0
  88. data/lib/polyfill/v2_4/string/instance/concat.rb +5 -7
  89. data/lib/polyfill/v2_4/string/instance/each_line.rb +17 -0
  90. data/lib/polyfill/v2_4/string/instance/lines.rb +55 -0
  91. data/lib/polyfill/v2_4/string/instance/match_q.rb +23 -0
  92. data/lib/polyfill/v2_4/string/instance/prepend.rb +5 -7
  93. data/lib/polyfill/v2_4/string/instance/unpack1.rb +23 -0
  94. data/lib/polyfill/v2_4/string_io.rb +1 -1
  95. data/lib/polyfill/v2_4/string_io/instance.rb +4 -4
  96. data/lib/polyfill/v2_4/string_io/instance/each_line.rb +5 -7
  97. data/lib/polyfill/v2_4/string_io/instance/gets.rb +5 -7
  98. data/lib/polyfill/v2_4/string_io/instance/readline.rb +5 -7
  99. data/lib/polyfill/v2_4/string_io/instance/readlines.rb +5 -7
  100. data/lib/polyfill/v2_4/symbol.rb +9 -0
  101. data/lib/polyfill/v2_4/symbol/instance.rb +15 -0
  102. data/lib/polyfill/v2_4/symbol/instance/casecmp_q.rb +25 -0
  103. data/lib/polyfill/v2_4/symbol/instance/match.rb +27 -0
  104. data/lib/polyfill/v2_4/symbol/instance/match_q.rb +17 -0
  105. data/lib/polyfill/version.rb +1 -1
  106. data/polyfill.gemspec +1 -0
  107. metadata +56 -3
@@ -12,19 +12,17 @@ module Polyfill
12
12
  return super() if ndigits == 0
13
13
  return to_f if ndigits > 0
14
14
 
15
- place = 10 ** -ndigits
16
- (self.to_f / place).round * place
15
+ place = 10**-ndigits
16
+ (to_f / place).round * place
17
17
  end
18
18
  end
19
19
 
20
- if RUBY_VERSION < '2.4.0'
21
- refine ::Integer do
22
- include Method
23
- end
20
+ refine ::Integer do
21
+ include Method
22
+ end
24
23
 
25
- def self.included(base)
26
- base.include Method
27
- end
24
+ def self.included(base)
25
+ base.include Method
28
26
  end
29
27
  end
30
28
  end
@@ -9,19 +9,17 @@ module Polyfill
9
9
  return super() if ndigits == 0
10
10
  return to_f if ndigits > 0
11
11
 
12
- place = 10 ** -ndigits
13
- (self.to_f / place).truncate * place
12
+ place = 10**-ndigits
13
+ (to_f / place).truncate * place
14
14
  end
15
15
  end
16
16
 
17
- if RUBY_VERSION < '2.4.0'
18
- refine ::Integer do
19
- include Method
20
- end
17
+ refine ::Integer do
18
+ include Method
19
+ end
21
20
 
22
- def self.included(base)
23
- base.include Method
24
- end
21
+ def self.included(base)
22
+ base.include Method
25
23
  end
26
24
  end
27
25
  end
@@ -1,5 +1,5 @@
1
- require 'polyfill/v2_4/io/class'
2
- require 'polyfill/v2_4/io/instance'
1
+ require_relative 'io/class'
2
+ require_relative 'io/instance'
3
3
 
4
4
  module Polyfill
5
5
  module V2_4
@@ -1,5 +1,5 @@
1
- require 'polyfill/v2_4/io/class/foreach'
2
- require 'polyfill/v2_4/io/class/readlines'
1
+ require_relative 'class/foreach'
2
+ require_relative 'class/readlines'
3
3
 
4
4
  module Polyfill
5
5
  module V2_4
@@ -1,3 +1,5 @@
1
+ require 'English'
2
+
1
3
  module Polyfill
2
4
  module V2_4
3
5
  module IO
@@ -6,42 +8,30 @@ module Polyfill
6
8
  module Method
7
9
  def foreach(name, *args)
8
10
  hash, others = args.partition { |arg| arg.is_a?(::Hash) }
9
-
10
11
  chomps = hash[0] && hash[0][:chomp]
11
12
 
12
13
  unless block_given?
13
- if chomps
14
- separator = others.find { |other| other.respond_to?(:to_str) }
14
+ return super(name, *others) unless chomps
15
15
 
16
- return Enumerator.new do |yielder|
17
- block =
18
- if separator
19
- Proc.new do |line|
20
- yielder.yield(line.chomp(separator))
21
- end
22
- else
23
- Proc.new do |line|
24
- yielder.yield(line.chomp)
25
- end
26
- end
27
- super(name, *others, &block)
16
+ separator = others.find do |other|
17
+ other.respond_to?(:to_str)
18
+ end || $INPUT_RECORD_SEPARATOR
19
+
20
+ return ::Enumerator.new do |yielder|
21
+ super(name, *others) do |line|
22
+ yielder.yield(line.chomp(separator))
28
23
  end
29
- else
30
- return super(name, *others)
31
24
  end
32
25
  end
33
26
 
34
27
  block =
35
28
  if chomps
36
- separator = others.find { |other| other.respond_to?(:to_str) }
37
- if separator
38
- Proc.new do |line|
39
- yield(line.chomp(separator))
40
- end
41
- else
42
- Proc.new do |line|
43
- yield(line.chomp)
44
- end
29
+ separator = others.find do |other|
30
+ other.respond_to?(:to_str)
31
+ end || $INPUT_RECORD_SEPARATOR
32
+
33
+ proc do |line|
34
+ yield(line.chomp(separator))
45
35
  end
46
36
  else
47
37
  Proc.new
@@ -51,14 +41,12 @@ module Polyfill
51
41
  end
52
42
  end
53
43
 
54
- if RUBY_VERSION < '2.4.0'
55
- refine ::IO.singleton_class do
56
- include Method
57
- end
44
+ refine ::IO.singleton_class do
45
+ include Method
46
+ end
58
47
 
59
- def self.included(base)
60
- base.include Method
61
- end
48
+ def self.included(base)
49
+ base.include Method
62
50
  end
63
51
  end
64
52
  end
@@ -1,3 +1,5 @@
1
+ require 'English'
2
+
1
3
  module Polyfill
2
4
  module V2_4
3
5
  module IO
@@ -10,26 +12,23 @@ module Polyfill
10
12
  inputs = super(file_name, *others)
11
13
 
12
14
  if hash[0] && hash[0][:chomp]
13
- separator = others.find { |other| other.respond_to?(:to_str) }
14
- if separator
15
- inputs.each { |input| input.chomp!(separator) }
16
- else
17
- inputs.each(&:chomp!)
18
- end
15
+ separator = others.find do |other|
16
+ other.respond_to?(:to_str)
17
+ end || $INPUT_RECORD_SEPARATOR
18
+
19
+ inputs.each { |input| input.chomp!(separator) }
19
20
  end
20
21
 
21
22
  inputs
22
23
  end
23
24
  end
24
25
 
25
- if RUBY_VERSION < '2.4.0'
26
- refine ::IO.singleton_class do
27
- include Method
28
- end
26
+ refine ::IO.singleton_class do
27
+ include Method
28
+ end
29
29
 
30
- def self.included(base)
31
- base.include Method
32
- end
30
+ def self.included(base)
31
+ base.include Method
33
32
  end
34
33
  end
35
34
  end
@@ -1,7 +1,8 @@
1
- require 'polyfill/v2_4/io/instance/each_line'
2
- require 'polyfill/v2_4/io/instance/gets'
3
- require 'polyfill/v2_4/io/instance/readline'
4
- require 'polyfill/v2_4/io/instance/readlines'
1
+ require_relative 'instance/each_line'
2
+ require_relative 'instance/gets'
3
+ require_relative 'instance/lines'
4
+ require_relative 'instance/readline'
5
+ require_relative 'instance/readlines'
5
6
 
6
7
  module Polyfill
7
8
  module V2_4
@@ -9,6 +10,7 @@ module Polyfill
9
10
  module Instance
10
11
  include EachLine
11
12
  include Gets
13
+ include Lines
12
14
  include Readline
13
15
  include Readlines
14
16
  end
@@ -1,3 +1,5 @@
1
+ require 'English'
2
+
1
3
  module Polyfill
2
4
  module V2_4
3
5
  module IO
@@ -6,42 +8,29 @@ module Polyfill
6
8
  module Method
7
9
  def each_line(*args)
8
10
  hash, others = args.partition { |arg| arg.is_a?(::Hash) }
9
-
10
11
  chomps = hash[0] && hash[0][:chomp]
11
12
 
12
13
  unless block_given?
13
- if chomps
14
- separator = others.find { |other| other.respond_to?(:to_str) }
14
+ return super(*others) unless chomps
15
15
 
16
- return Enumerator.new do |yielder|
17
- block =
18
- if separator
19
- Proc.new do |line|
20
- yielder.yield(line.chomp(separator))
21
- end
22
- else
23
- Proc.new do |line|
24
- yielder.yield(line.chomp)
25
- end
26
- end
27
- super(*others, &block)
16
+ separator = others.find do |other|
17
+ other.respond_to?(:to_str)
18
+ end || $INPUT_RECORD_SEPARATOR
19
+ return ::Enumerator.new do |yielder|
20
+ super(*others) do |line|
21
+ yielder.yield(line.chomp(separator))
28
22
  end
29
- else
30
- return super(*others)
31
23
  end
32
24
  end
33
25
 
34
26
  block =
35
27
  if chomps
36
- separator = others.find { |other| other.respond_to?(:to_str) }
37
- if separator
38
- Proc.new do |line|
39
- yield(line.chomp(separator))
40
- end
41
- else
42
- Proc.new do |line|
43
- yield(line.chomp)
44
- end
28
+ separator = others.find do |other|
29
+ other.respond_to?(:to_str)
30
+ end || $INPUT_RECORD_SEPARATOR
31
+
32
+ proc do |line|
33
+ yield(line.chomp(separator))
45
34
  end
46
35
  else
47
36
  Proc.new
@@ -51,14 +40,12 @@ module Polyfill
51
40
  end
52
41
  end
53
42
 
54
- if RUBY_VERSION < '2.4.0'
55
- refine ::IO do
56
- include Method
57
- end
43
+ refine ::IO do
44
+ include Method
45
+ end
58
46
 
59
- def self.included(base)
60
- base.include Method
61
- end
47
+ def self.included(base)
48
+ base.include Method
62
49
  end
63
50
  end
64
51
  end
@@ -1,3 +1,5 @@
1
+ require 'English'
2
+
1
3
  module Polyfill
2
4
  module V2_4
3
5
  module IO
@@ -10,26 +12,23 @@ module Polyfill
10
12
  input = super(*others)
11
13
 
12
14
  if !input.nil? && hash[0] && hash[0][:chomp]
13
- separator = others.find { |other| other.respond_to?(:to_str) }
14
- if separator
15
- input.chomp!(separator)
16
- else
17
- input.chomp!
18
- end
15
+ separator = others.find do |other|
16
+ other.respond_to?(:to_str)
17
+ end || $INPUT_RECORD_SEPARATOR
18
+
19
+ input.chomp!(separator)
19
20
  end
20
21
 
21
22
  input
22
23
  end
23
24
  end
24
25
 
25
- if RUBY_VERSION < '2.4.0'
26
- refine ::IO do
27
- include Method
28
- end
26
+ refine ::IO do
27
+ include Method
28
+ end
29
29
 
30
- def self.included(base)
31
- base.include Method
32
- end
30
+ def self.included(base)
31
+ base.include Method
33
32
  end
34
33
  end
35
34
  end
@@ -0,0 +1,54 @@
1
+ require 'English'
2
+
3
+ module Polyfill
4
+ module V2_4
5
+ module IO
6
+ module Instance
7
+ module Lines
8
+ module Method
9
+ def lines(*args)
10
+ hash, others = args.partition { |arg| arg.is_a?(::Hash) }
11
+ chomps = hash[0] && hash[0][:chomp]
12
+
13
+ unless block_given?
14
+ return super(*others) unless chomps
15
+
16
+ separator = others.find do |other|
17
+ other.respond_to?(:to_str)
18
+ end || $INPUT_RECORD_SEPARATOR
19
+ return ::Enumerator.new do |yielder|
20
+ super(*others) do |line|
21
+ yielder.yield(line.chomp(separator))
22
+ end
23
+ end
24
+ end
25
+
26
+ block =
27
+ if chomps
28
+ separator = others.find do |other|
29
+ other.respond_to?(:to_str)
30
+ end || $INPUT_RECORD_SEPARATOR
31
+
32
+ proc do |line|
33
+ yield(line.chomp(separator))
34
+ end
35
+ else
36
+ Proc.new
37
+ end
38
+
39
+ super(*others, &block)
40
+ end
41
+ end
42
+
43
+ refine ::IO do
44
+ include Method
45
+ end
46
+
47
+ def self.included(base)
48
+ base.include Method
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -1,3 +1,5 @@
1
+ require 'English'
2
+
1
3
  module Polyfill
2
4
  module V2_4
3
5
  module IO
@@ -10,26 +12,23 @@ module Polyfill
10
12
  input = super(*others)
11
13
 
12
14
  if hash[0] && hash[0][:chomp]
13
- separator = others.find { |other| other.respond_to?(:to_str) }
14
- if separator
15
- input.chomp!(separator)
16
- else
17
- input.chomp!
18
- end
15
+ separator = others.find do |other|
16
+ other.respond_to?(:to_str)
17
+ end || $INPUT_RECORD_SEPARATOR
18
+
19
+ input.chomp!(separator)
19
20
  end
20
21
 
21
22
  input
22
23
  end
23
24
  end
24
25
 
25
- if RUBY_VERSION < '2.4.0'
26
- refine ::IO do
27
- include Method
28
- end
26
+ refine ::IO do
27
+ include Method
28
+ end
29
29
 
30
- def self.included(base)
31
- base.include Method
32
- end
30
+ def self.included(base)
31
+ base.include Method
33
32
  end
34
33
  end
35
34
  end
@@ -1,3 +1,5 @@
1
+ require 'English'
2
+
1
3
  module Polyfill
2
4
  module V2_4
3
5
  module IO
@@ -10,26 +12,23 @@ module Polyfill
10
12
  inputs = super(*others)
11
13
 
12
14
  if hash[0] && hash[0][:chomp]
13
- separator = others.find { |other| other.respond_to?(:to_str) }
14
- if separator
15
- inputs.each { |input| input.chomp!(separator) }
16
- else
17
- inputs.each(&:chomp!)
18
- end
15
+ separator = others.find do |other|
16
+ other.respond_to?(:to_str)
17
+ end || $INPUT_RECORD_SEPARATOR
18
+
19
+ inputs.each { |input| input.chomp!(separator) }
19
20
  end
20
21
 
21
22
  inputs
22
23
  end
23
24
  end
24
25
 
25
- if RUBY_VERSION < '2.4.0'
26
- refine ::IO do
27
- include Method
28
- end
26
+ refine ::IO do
27
+ include Method
28
+ end
29
29
 
30
- def self.included(base)
31
- base.include Method
32
- end
30
+ def self.included(base)
31
+ base.include Method
33
32
  end
34
33
  end
35
34
  end