1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

csv.rb: foreach enumerator

* lib/csv.rb (CSV.foreach): support enumerator.  based on a patch by
  Hanmac (Hans Mackowiak) at [ruby-core:57643].  [ruby-core:57283]
  [Feature #8929]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43135 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2013-10-04 00:32:35 +00:00
parent 6c4387b4f2
commit 28204c67ed
3 changed files with 13 additions and 0 deletions

View file

@ -1,3 +1,9 @@
Fri Oct 4 09:32:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/csv.rb (CSV.foreach): support enumerator. based on a patch by
Hanmac (Hans Mackowiak) at [ruby-core:57643]. [ruby-core:57283]
[Feature #8929]
Thu Oct 3 18:20:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> Thu Oct 3 18:20:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
* win32/win32.c (console_emulator_p, constat_handle): disable built-in * win32/win32.c (console_emulator_p, constat_handle): disable built-in

View file

@ -1116,6 +1116,7 @@ class CSV
# but transcode it to UTF-8 before CSV parses it. # but transcode it to UTF-8 before CSV parses it.
# #
def self.foreach(path, options = Hash.new, &block) def self.foreach(path, options = Hash.new, &block)
return to_enum(__method__, path, options) unless block
open(path, options) do |csv| open(path, options) do |csv|
csv.each(&block) csv.each(&block)
end end

View file

@ -40,6 +40,12 @@ class TestCSV::Interface < TestCSV
end end
end end
def test_foreach_enum
CSV.foreach(@path, col_sep: "\t", row_sep: "\r\n").zip(@expected) do |row, exp|
assert_equal(exp, row)
end
end
def test_open_and_close def test_open_and_close
csv = CSV.open(@path, "r+", col_sep: "\t", row_sep: "\r\n") csv = CSV.open(@path, "r+", col_sep: "\t", row_sep: "\r\n")
assert_not_nil(csv) assert_not_nil(csv)