diff options
-rw-r--r-- | lib/csv.rb | 2 | ||||
-rwxr-xr-x | test/csv/test_data_converters.rb | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/csv.rb b/lib/csv.rb index 20c9f152a8..14025c1cd1 100644 --- a/lib/csv.rb +++ b/lib/csv.rb @@ -2207,7 +2207,7 @@ class CSV fields.map.with_index do |field, index| converters.each do |converter| - break if field.nil? + break if headers && field.nil? field = if converter.arity == 1 # straight field converter converter[field] else # FieldInfo converter diff --git a/test/csv/test_data_converters.rb b/test/csv/test_data_converters.rb index e274b2b10b..0786ca6d0f 100755 --- a/test/csv/test_data_converters.rb +++ b/test/csv/test_data_converters.rb @@ -176,6 +176,15 @@ class TestCSV::DataConverters < TestCSV @parser.shift.fields ) end + def test_custom_converter_with_blank_field + converter = lambda { |field| field.nil? } + row = nil + assert_nothing_raised(Exception) do + row = CSV.parse_line('nil,', converters: converter) + end + assert_equal([false, true], row); + end + def test_shortcut_interface assert_equal( ["Numbers", ":integer", 1, ":float", 3.015], CSV.parse_line(@data, converters: :numeric) ) |