lib/polyfill/v2_4/io/class/foreach.rb in polyfill-0.3.0 vs lib/polyfill/v2_4/io/class/foreach.rb in polyfill-0.4.0
- old
+ new
@@ -1,65 +1,53 @@
+require 'English'
+
module Polyfill
module V2_4
module IO
module Class
module Foreach
module Method
def foreach(name, *args)
hash, others = args.partition { |arg| arg.is_a?(::Hash) }
-
chomps = hash[0] && hash[0][:chomp]
unless block_given?
- if chomps
- separator = others.find { |other| other.respond_to?(:to_str) }
+ return super(name, *others) unless chomps
- return Enumerator.new do |yielder|
- block =
- if separator
- Proc.new do |line|
- yielder.yield(line.chomp(separator))
- end
- else
- Proc.new do |line|
- yielder.yield(line.chomp)
- end
- end
- super(name, *others, &block)
+ separator = others.find do |other|
+ other.respond_to?(:to_str)
+ end || $INPUT_RECORD_SEPARATOR
+
+ return ::Enumerator.new do |yielder|
+ super(name, *others) do |line|
+ yielder.yield(line.chomp(separator))
end
- else
- return super(name, *others)
end
end
block =
if chomps
- separator = others.find { |other| other.respond_to?(:to_str) }
- if separator
- Proc.new do |line|
- yield(line.chomp(separator))
- end
- else
- Proc.new do |line|
- yield(line.chomp)
- end
+ separator = others.find do |other|
+ other.respond_to?(:to_str)
+ end || $INPUT_RECORD_SEPARATOR
+
+ proc do |line|
+ yield(line.chomp(separator))
end
else
Proc.new
end
super(name, *others, &block)
end
end
- if RUBY_VERSION < '2.4.0'
- refine ::IO.singleton_class do
- include Method
- end
+ refine ::IO.singleton_class do
+ include Method
+ end
- def self.included(base)
- base.include Method
- end
+ def self.included(base)
+ base.include Method
end
end
end
end
end