parseCSV "name" . printCSV not idempotent

Antoine Latter aslatter at gmail.com
Sun Nov 7 13:52:35 EST 2010


On Sun, Nov 7, 2010 at 10:43 AM, Joachim Breitner
<mail at joachim-breitner.de> wrote:
> Hi Jaap,
>
> your CSV library is used in the Hackage2 project. I found that backup
> and restore does not work with a pristine state, and the reason seems to
> be a problem with your library: It either adds unnecessary newlines or
> interprets empty lines at the end of the program for no apparent reason:
>
> Prelude Text.CSV> (parseCSV "name" . printCSV) []
> Right [[""]]
> Prelude Text.CSV> (parseCSV "name" . printCSV) [[]]
> Right [[""],[""]]
> Prelude Text.CSV> (parseCSV "name" . printCSV) [[],[]]
> Right [[""],[""]]
> Prelude Text.CSV> (parseCSV "name" . printCSV) [["hi"],["ho"]]
> Right [["hi"],["ho"],[""]]
> Prelude Text.CSV> (parseCSV "name" . printCSV) [["hi"]]
> Right [["hi"],[""]]
> Prelude Text.CSV>
>

At some point I had a hack in place to drop the last row of a parsed
CSV file if it was nothing but an empty string. It may have gotten
lost, or it may not be universally applied in hackage-server 2. This
worked pretty well for most things, but I don't think I ever ran into
the issue of an empty line in the middle of a CSV file.

Antoine



More information about the cabal-devel mailing list