# HG changeset patch # User Claus Gittinger # Date 1381238940 -7200 # Node ID e7f5200ad493f3b04a6b348d4da450178b929c9e # Parent 94bd832a355e8ed6a0299c70a92f4843aff1c25c class: Number added: #readSmalltalkSyntaxFrom:onError: changed: #readSmalltalkSyntaxFrom: diff -r 94bd832a355e -r e7f5200ad493 Number.st --- a/Number.st Mon Sep 30 12:44:21 2013 +0200 +++ b/Number.st Tue Oct 08 15:29:00 2013 +0200 @@ -380,18 +380,15 @@ (character-) aStream. Returns nil if aStream contains no valid number." - ^ [ - Scanner scanNumberFrom:aStream. - ] on:Error do:[:ex| - nil - ]. + ^ self readSmalltalkSyntaxFrom:aStream onError:nil. " Number readSmalltalkSyntaxFrom:'99d' Number readSmalltalkSyntaxFrom:'99.00d' Number readSmalltalkSyntaxFrom:'54.32e-01' Number readSmalltalkSyntaxFrom:'12345678901234567890' - Number readSmalltalkSyntaxFrom:'16rAAAAFFFFAAAAFFFF' + Number readSmalltalkSyntaxFrom:'16rAAAAFFFFAAAAFFFF' + Number readSmalltalkSyntaxFrom:'foobar' Number readSmalltalkSyntaxFrom:'(1/10)' Number readSmalltalkSyntaxFrom:'(1/0)' @@ -417,9 +414,29 @@ " "Modified: / 19.11.1999 / 18:26:47 / cg" +! + +readSmalltalkSyntaxFrom:aStream onError:errorValue + "ST-80 compatibility (thanks to a note from alpha testers) + read and return the next Number in smalltalk syntax from the + (character-) aStream. + Returns nil if aStream contains no valid number." + + |n| + + [ + n := Scanner scanNumberFrom:aStream. + ] on:Error do:[:ex| + n := nil + ]. + n isNil ifTrue:[^ errorValue value]. + ^ n + + " + Number readSmalltalkSyntaxFrom:'foo' onError:123 + " ! ! - !Number class methodsFor:'constants'! decimalPointCharacter @@ -651,7 +668,6 @@ "Modified: / 16.11.2001 / 14:13:16 / cg" ! ! - !Number class methodsFor:'private'! readMantissaAndScaleFrom:aStream radix:radix @@ -726,7 +742,6 @@ ^ self == Number ! ! - !Number methodsFor:'*StateSpecs-Specs'! isEqual: aNumber within: accuracy @@ -889,7 +904,6 @@ ^ self rounded printString ! ! - !Number methodsFor:'coercing & converting'! i @@ -2352,14 +2366,13 @@ "Modified: / 5.11.2001 / 17:54:22 / cg" ! ! - !Number class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.143 2013-08-01 12:44:55 cg Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.144 2013-10-08 13:29:00 cg Exp $' ! version_CVS - ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.143 2013-08-01 12:44:55 cg Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.144 2013-10-08 13:29:00 cg Exp $' ! !