> On 05 Jul 2016, at 16:40, Peter Uhnák <i.uh...@gmail.com> wrote:
> 
> I know that only NeoCSV uses it — that's how I ran into this problem. I was 
> processing some (czech) CSV files which used the decimal comma separator… 
> however the numbers were silently truncated, which wasn't nice to say the 
> least — I really don't understand why the default behavior is to silently 
> change the value, and not produce an error — this also applies to Pharo's 
> number parser.
> 
> BTW, you not only need to set the thousands separator, but the decimal 
> separator too, I guess.
> 
> depending on the default values, but that's really not the main point
> 
> Now, I can understand where/how your suggestions would make sense. Maybe you 
> can try subclassing and make your own variant (first) ?
> 
> Well I would need a way to configure the CSV parser. Because I am certainly 
> not interested in manually transforming every float field. I want just 
> configure it at one place and use the regular addFloatField — after all the 
> file is going to be consistent in it's format.
> 
> Btw there are other options for improvement, like configuring the default 
> date field and then having addDateField, etc. But maybe that's just 
> overloading the NeoCSV parser… in any case it's a food for thought.

Indeed, I do not want to overload the CSV parser, it is pretty simple right now.

The conversions are all in the convenience protocol for a reason: they just 
save you some typing. You really ought to do your own conversions, when you 
need to.

  parser addFieldConverter: [ :string | MyNumberParser parse: string ]

There are too many formats out there (especially for dates/times).

You are right about truncation and error handling. But parsing and enforcing a 
syntax are two different things. That is why I think the thousands separator 
option is not that simple, consider

  1,000.00
  10,00.00
  1,0,0,0.00
  1,000.00E1000,000

You see ? One quick and dirty solution would be to just remove $, or replace 
one character by another.

> Peter
> 
> 
> On Tue, Jul 5, 2016 at 2:34 PM, Sven Van Caekenberghe <s...@stfx.eu> wrote:
> Peter,
> 
> NeoNumberParser is a simple number (integer/float) parser that is part of 
> NeoCSV (it was based on the JSON number parsing code). It was added because I 
> wanted a number parser that makes little demands on the stream it parses from 
> (just 1 character peek ahead, no arbitrary backtracking, limited API). It was 
> not meant to be very powerful.
> 
> If you check the references, you see that where it is used in NeoCSVReader, 
> you could easily substitute another parser.
> 
> Now, I can understand where/how your suggestions would make sense. Maybe you 
> can try subclassing and make your own variant (first) ? BTW, you not only 
> need to set the thousands separator, but the decimal separator too, I guess.
> 
> Sven
> 
> > On 05 Jul 2016, at 14:17, Peter Uhnák <i.uh...@gmail.com> wrote:
> >
> > Hi,
> >
> > is there any plan for NeoNumberParser do add localization support?
> >
> > e.g.
> >
> > NeoNumberParser new
> >     thousandsSeparator: $,; "common in us data"
> >     parse: '12,230'
> >
> > =>
> >
> > 12230
> >
> > NeoNumberParser new
> >     decimalSeparator: $,; "common in eu data"
> >     parse: '12,230'
> >
> > =>
> >
> > 12.230
> >
> > Thanks,
> > Peter
> 
> 
> 


Reply via email to