https://forum.world.st/NeoCSV-and-special-handling-for-some-columns-tp4852282p4853398.html
Yes, there are a couple of newer features that were added after the documentation was written. Keeping documentation up to date is also a PITA.
> On 03 Oct 2015, at 08:54, stepharo <
[hidden email]> wrote:
>
> sven do you think that we should add this to the chapter?
>
>
> Le 28/9/15 16:42, Sven Van Caekenberghe a écrit :
>>> On 28 Sep 2015, at 15:04, Mariano Martinez Peck <
[hidden email]> wrote:
>>>
>>> Imagine something like this:
>>>
>>> neoCSVReader := (NeoCSVReader on: stream).
>>> neoCSVReader
>>> separator: $,;
>>> recordClass: PriceRecord;
>>> addIgnoredField; "<name>"
>>> addField: #securityUniqueId: ; "<ticker>"
>>> addField: #date: converter: [ :string | Date readFrom: string readStream pattern: 'yyyymmdd' ]; "<date>"
>>> addFloatField: #open: ; "<open>"
>>> addFloatField: #high: ; "<high>"
>>> addFloatField: #low: ; "<low>"
>>> addFloatField: #close: ; "<close>"
>>> addIntegerField: #volume: . "<vol>"
>>> neoCSVReader skipHeader.
>>> priceRecords := neoCSVReader upToEnd.
>>>
>>>
>>> The #recordClass: is optional. If not, you can get an array of arrays instead.
>>> You can add #addIgnoredField for all the ones you want to ignore, then add the #addNumber: etc for the number ones, etc.
>> Correct.
>>
>>> To write a default empty value, I would use my own converter. Something like:
>>>
>>> addField: #stringcolumn: converter: [ :string | string isEmptyOrNil ifTrue: [ '' ] ];
>>> addField: #numbercolumn: converter: [ :string | string isEmptyOrNil ifTrue: [ 0 ] ifFalse: [ NeoNumberParser parse: string ] ];
>> Actually there is NeoCSVReader>>#emptyFieldValue: which you can use the configure the reader (but it counts for all fields).
>>
>>> Hope this helps.
>>>
>>> Cheers,
>>>
>>>
>>>
>>> On Mon, Sep 28, 2015 at 9:06 AM, Nicolai Hess <
[hidden email]> wrote:
>>> Hi,
>>>
>>> I have two problems I could not solve:
>>>
>>> 1. I would like to read only some columns: I have a large file with
>>> ~30 colums, but I am only interested on ~5 columns
>>> (not that important, I could pre-process the file) but anyway it would be
>>> nice to do it in smalltalk.
>>>
>>> 2. some columns will contain only strings (quoted values) and some only numbers,
>>> but the field may be empty, is it possible to define the default "emptyValue" as an
>>> - empty string for empty fields in the "string column"
>>> - 0 for empty fields in the "number column"?
>>>
>>>
>>> thanks
>>> in advance
>>>
>>> nicolai
>>>
>>>
>>>
>>> --
>>> Mariano
>>>
http://marianopeck.wordpress.com>>
>>
>
>