summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjeg2 <jeg2@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-05-26 15:35:06 +0000
committerjeg2 <jeg2@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-05-26 15:35:06 +0000
commita9c056f1ed254c99152134235bd973ec503f64f2 (patch)
tree3896fb8bf7c10c2a03390fb8e45e828912fed8f5
parentb74f5dee4a3a2b62753e42b87ec26837d508fa9a (diff)
* lib/csv.rb: Enhance each() to support Enumerator.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31740 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--lib/csv.rb8
-rwxr-xr-xtest/csv/test_interface.rb8
3 files changed, 20 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index c06a3b5b58..38e428c403 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,11 @@
+Thu May 27 00:34:07 2011 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Enhance each() to support Enumerator.
+
Thu May 26 10:32:11 2011 James Edward Gray II <jeg2@ruby-lang.org>
- * lib/csv.rb: Documentation improvements from Ysiad Ferreiras.
- [Ruby 1.9 - Bug #4785]
+ * lib/csv.rb: Documentation improvements from Ysiad Ferreiras.
+ [Ruby 1.9 - Bug #4785]
Thu May 26 15:42:02 2011 Cezary Baginski <cezary.baginski@gmail.com>
diff --git a/lib/csv.rb b/lib/csv.rb
index 48c2e97eda..c7649b8842 100644
--- a/lib/csv.rb
+++ b/lib/csv.rb
@@ -1787,8 +1787,12 @@ class CSV
# The data source must be open for reading.
#
def each
- while row = shift
- yield row
+ if block_given?
+ while row = shift
+ yield row
+ end
+ else
+ to_enum
end
end
diff --git a/test/csv/test_interface.rb b/test/csv/test_interface.rb
index 92da39cebc..785f43126b 100755
--- a/test/csv/test_interface.rb
+++ b/test/csv/test_interface.rb
@@ -112,6 +112,14 @@ class TestCSV::Interface < TestCSV
assert_equal(nil, csv.shift)
end
end
+
+ def test_enumerators_are_supported
+ CSV.open(@path, col_sep: "\t", row_sep: "\r\n") do |csv|
+ enum = csv.each
+ assert_instance_of(Enumerator, enum)
+ assert_equal(@expected.shift, enum.next)
+ end
+ end
### Test Write Interface ###