From afa6dad2294cc645d19811f14bd2d8a5035ea3da Mon Sep 17 00:00:00 2001 From: Rob Harrison Date: Tue, 10 Mar 2020 14:46:00 +0000 Subject: [PATCH] Fixed incompatibility with some CSV files, which sometimes do not quote text fields while containing quote characters. See new test case for expected functionality. Origional functionality was to fail on parse as field was terminated on doublequote. --- src/Data/Csv/Parser.hs | 3 +-- tests/UnitTests.hs | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Data/Csv/Parser.hs b/src/Data/Csv/Parser.hs index d028167..14cc23f 100644 --- a/src/Data/Csv/Parser.hs +++ b/src/Data/Csv/Parser.hs @@ -167,8 +167,7 @@ escapedField = do else return s unescapedField :: Word8 -> AL.Parser S.ByteString -unescapedField !delim = A.takeWhile (\ c -> c /= doubleQuote && - c /= newline && +unescapedField !delim = A.takeWhile (\ c -> c /= newline && c /= delim && c /= cr) diff --git a/tests/UnitTests.hs b/tests/UnitTests.hs index a42bb73..424ef61 100644 --- a/tests/UnitTests.hs +++ b/tests/UnitTests.hs @@ -185,6 +185,7 @@ positionalTests = [["a", "b", "c"], ["d", "e", "f"]]) , ("leadingSpace", " a, b, c\n", [[" a", " b", " c"]]) , ("rfc4180", rfc4180Input, rfc4180Output) + , ("unquotedTextContainingQuotes", "a\"b\"c,def\",g\"hi\",jkl\nabc,def,ghi,jkl", [["a\"b\"c", "def\"", "g\"hi\"", "jkl"], ["abc", "def", "ghi", "jkl"]]) ] decodeWithTests = [ ("tab-delim", defDec { decDelimiter = 9 }, "1\t2", [["1", "2"]])