Re: Proposal for a (small) enhancement to the value() function.
- Posted by Robert Craig <rds at RapidEuphoria.com> Jun 28, 2007
- 718 views
CChris wrote: > Currently, value(), defined in get.e, takes a sequence and returns > {status code, value read}. > The proposed enhancement is to return > {status code, > value read, > number of characters read, > number of leading whitespace characters}. > > This can be done at the cost of creating a duplicated, slightly modified copy > of the internal Get() function, so that performance won't be affacted at all. > get() won't be affected, since where() will give you most of the same > information. > > Any thoughts? issues? other suggestions? I don't care too much, one way or the other, since I haven't had a need for the extra information, but I can see that if you wanted to use value() to process a long string containing many object-representations, like you can do with get(), then you would like to know how many characters it read each time, so you could chop those off the input sequence, and run value() on the rest. I don't think this would break any significant amount of existing code. If people think this is worthwhile, then my (weak) preference would be: - go ahead, but extend get() as well, to keep the symmetry between get() and value() A small point that may or may not affect you: When get() or value() process an object representation, they sometimes stop reading when they see '}' or '"', but sometimes they must read an extra space, e.g. for numbers like 3.33333 an extra character (e.g. blank) might have to be consumed in order to know that you've reached the end of the number. There is no way for get() to push this character back into the input stream. This issue bothered one or two people in the past. i.e. a stream like {1,2,3}3.33333 can be read properly, but 3.33333{1,2,3} can't. That's why the docs say you need some whitespace between all objects in the stream. Regards, Rob Craig Rapid Deployment Software http://www.RapidEuphoria.com