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

[ruby/csv] Make CSV::Row#dup return a usable Row (#108)

* Make CSV::Row#dup return a usable Row

Previously, calling `dup` on a `CSV::Row` object yielded an object whose
copy was too shallow. Changing the clone's fields would also change the
fields on the source. This change makes the clone more distinct from the
source, so that changes can be made to its fields without affecting the
source.

* Simplify

https://github.com/ruby/csv/commit/64a1ea06fc
This commit is contained in:
Jim Kane 2019-10-22 05:01:24 -05:00 committed by Nobuyoshi Nakada
parent 9141aae8c2
commit b219cd5ac3
No known key found for this signature in database
GPG key ID: 7CD2805BFA3770C6
Notes: git 2020-07-20 03:35:49 +09:00
2 changed files with 4 additions and 1 deletions

View file

@ -50,7 +50,7 @@ class CSV
def initialize_copy(other)
super
@row = @row.dup
@row = @row.collect(&:dup)
end
# Returns +true+ if this is a header row.

View file

@ -425,6 +425,9 @@ class TestCSVRow < Test::Unit::TestCase
def test_dup
row = CSV::Row.new(["A"], ["foo"])
dupped_row = row.dup
dupped_row["A"] = "bar"
assert_equal(["foo", "bar"],
[row["A"], dupped_row["A"]])
dupped_row.delete("A")
assert_equal(["foo", nil],
[row["A"], dupped_row["A"]])