However, there are two details:
1) maybe you have to care about separators for example ' 10' is Number will be true, while '10 ' isNumber will be false think of changing ^stream skipSeparators; atEnd
2) the #isNumber method name is questionnable Current implementation in virgin images is a short cut of (isKindOf: Number), Most senders of isNumber will really expect a Number, not a String try (2 * '4') or ('3.14' sin) in your image, and you will see what i mean.
If you want strings to become unevaled (differed evaluation) objects, then it makes me think of a lisp approach, String quotes being equivalent somehow to lisp uneval quote...
Nicolas
Damien Cassou:
ncellier@ifrance.com wrote:
I suggest you use my Squeak NumberParser (See http://bugs.impara.de/view.php?id=3512 ) which has error handling a little bit more developped than just answering zero...
You could simply test is aNumber is read without error from (self readStream), and assert the stream atEnd.
Your parser works perfectly. Now, #stringIsNumber should be implemented as:
stringIsNumber | stream | stream _ self readStream. SqNumberParser parse: stream onError: [^ false]. ^ stream atEnd
Next line is a subliminal message, don't read it please ! It would be cool to have it in the base image, please include it
Thank you
________________________________________________________________________ iFRANCE, exprimez-vous ! http://web.ifrance.com
ncellier@ifrance.com wrote:
However, there are two details:
- maybe you have to care about separators
for example ' 10' is Number will be true, while '10 ' isNumber will be false think of changing ^stream skipSeparators; atEnd
Thank you for this precision. I can strip the string too.
- the #isNumber method name is questionnable
Current implementation in virgin images is a short cut of (isKindOf: Number), Most senders of isNumber will really expect a Number, not a String try (2 * '4') or ('3.14' sin) in your image, and you will see what i mean.
I've noticed this and change the name in my previous mail to #stringIsNumber.
Thank you
squeak-dev@lists.squeakfoundation.org