parse and skipWhite

Sönke Ludwig sludwig at outerproduct.org
Thu Oct 4 01:56:44 PDT 2012


Am 10/4/2012 10:48 AM, schrieb monarch_dodra:
> A couple weeks ago, an issue came up regarding parse's behavior in
> regards to skipping leading ws.
> 
> http://d.puremagic.com/issues/show_bug.cgi?id=8729
> https://github.com/D-Programming-Language/phobos/pull/817
> https://github.com/D-Programming-Language/phobos/pull/828
> 
> The gist of the conversations is that the current behavior "do not skip
> leading whitespaces" was not completely enforced (because parse!double
> did skip'em) this meant 2 things:
> 1) parse!double needed to be "fixed" to behave like the others. (new
> pull 833)
> 2) parse's behavior was put into question:
> 2).1) Parse should be changed to skip leading ws.
> 2).2) Parse should keep NOT skipping leading ws
> 
> The conversation concluded towards 2.2: Do not skip WS.
> 
> Another proposal was made though, to introduce a "skipWhite" function
> that would take and return by reference, and also work on ranges, two
> things "std.String.stripLeft" does not do. This would allow this syntaxes:
> string ss = ...
> double d = ss.skipWhite().parse!double();
> while(!ss.skipWhite().empty)
>     ss.parse!double().writeln();
> 
> I proposed this in (currently closed) pr 827
> https://github.com/D-Programming-Language/phobos/pull/827
> 
> MY ISSUE THAT I WOULD LIKE DISCUSSED HERE IS:
> The introduction of "skipWhite" would make "permanent" turn to the "do
> not skip ws" behavior: If this function exists, then surely, it is
> because parse does not skip ws.
> 
> If we don't introduce it though, it means that if it turns out we DO
> want to make parse skip ws, then we won't have that useless function
> bothering us.
> 
> So yeah, what are your thought, do you want to see "skipWhite" in
> std.conv? Or do you think it would be better to just do without it? Keep
> in mind, it *is* convenient though! :D

I'm not sure if std.conv is the best place for skipWhite() - after all
it doesn't convert anything, but would definitely prefer the "parse
doesn't skip" solution. It avoids silent failures in case white space is
actually not intended. It also naturally doesn't make assumptions on
what kind of white space is considered.


More information about the Digitalmars-d mailing list