[Cuis-dev] Can't parse CSV data from file

Hilaire Fernandes hfern at free.fr
Sun Jul 23 04:24:29 PDT 2023


Hi,

I investigate a bit the situation, and the problem seems to come from 
identity comparison of character which could be instance of Character or 
instance of UnicodeCodePoint when read from file. So we have identity 
comparison:

peekSeparator
     ^ self peekChar == separator

There is other method in NeoCSV relying on equal identity between 
characters: #peekFor: #peekQuote

Options to fix it:

  * Make the separator a UnicodePoint, most tests should break.
  * Use equality instead of identity => tested, lock the image
  * other...

I added a test to detect that scenario.



Hilaire


Le 22/07/2023 à 23:58, Hilaire Fernandes via Cuis-dev a écrit :
> Hi,
>
> In the first scenario bellow, the csv content is read correctly, the 
> header is the expect array with 3 items.
>
> In the second scenario, where the same content is read from the 
> timeSlot.csv file, the header is not correctly interpreted, indeed an 
> array with only one string is returned.
>
> It is like if the comma is not interpreted as a field separator.
>
> In the first scenario the data is a String, in the second the file 
> content is instantiated as an UnicodeString.
>
> To reproduce, install NeoCSV package from my forked repository
>
> ( NeoCSVReader on: 'timeSlotName,start,end
> P1,7:45,8:30
> P2,8:35,9:20' readStream) readHeader.
>
> => #('timeSlotName' 'start' 'end') .
>
>
> ( NeoCSVReader on: 'timeSlot.csv' asFileEntry readStream) readHeader.
>
> => #('timeSlotName,start,end') .
>
> Thanks
>
> Hilaire
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230723/cbc072b4/attachment.htm>


More information about the Cuis-dev mailing list