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"]])