# HG changeset patch # User Claus Gittinger # Date 1367335054 -7200 # Node ID a78cec832ef355a70359c14fa559541d16b8e9c7 # Parent 116b287d6d8911687bdd1aeef2ea033a1545c2fe class: Number comment/format in: #readSmalltalkSyntaxFrom: changed: #readFrom:decimalPointCharacters:onError: allow reading sign(fraction) diff -r 116b287d6d89 -r a78cec832ef3 Number.st --- a/Number.st Tue Apr 30 15:38:25 2013 +0200 +++ b/Number.st Tue Apr 30 17:17:34 2013 +0200 @@ -182,35 +182,35 @@ ^ [ |value intValue mantissaAndScale scale decimalMantissa str - nextChar radix negative signExp exp denom| + nextChar radix sign signExp exp denom| str := aStringOrStream readStream. nextChar := str skipSeparators. nextChar isNil ifTrue:[^ exceptionBlock value]. - nextChar = $( ifTrue:[ - "maybe a Fraction e.g. (1/3)" - value := self readSmalltalkSyntaxFrom:str. - value isNil ifTrue:[^ exceptionBlock value]. - ^ value - ]. (nextChar == $-) ifTrue:[ - negative := true. + sign := -1. str next. nextChar := str peekOrNil ] ifFalse:[ - negative := false. + sign := 1. (nextChar == $+) ifTrue:[ str next. nextChar := str peekOrNil ] ]. + nextChar = $( ifTrue:[ + "maybe a Fraction e.g. (1/3)" + value := self readSmalltalkSyntaxFrom:str. + value isNil ifTrue:[^ exceptionBlock value]. + ^ value * sign + ]. nextChar isNil ifTrue:[^ exceptionBlock value]. (nextChar isDigit or:[(decimalPointCharacters includes:nextChar)]) ifFalse:[ ^ exceptionBlock value. "/ value := super readFrom:str. -"/ negative ifTrue:[value := value negated]. +"/ sign == -1 ifTrue:[value := value negated]. "/ ^ value ]. (decimalPointCharacters includes:nextChar) ifTrue:[ @@ -293,7 +293,7 @@ ]. ]. ]. - negative ifTrue:[ + sign == -1 ifTrue:[ value := value negated ]. value. @@ -396,8 +396,12 @@ Number readSmalltalkSyntaxFrom:'(1/0)' - Number readFrom:'(1/3)' + Number readFrom:'(1/3)' Number readFrom:'(-1/3)' + Number readFrom:'-(1/3)' + Number readFrom:'(1/-3)' + Number readFrom:'(-1/-3)' + Number readFrom:'-(-1/-3)' Number readSmalltalkSyntaxFrom:'+00000123.45' Number readFrom:'+00000123.45' @@ -736,6 +740,7 @@ ^ self truncated ! ! + !Number methodsFor:'Compatibility-Squeak'! asSmallAngleDegrees @@ -2339,10 +2344,10 @@ !Number class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.141 2013-04-19 15:07:39 stefan Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.142 2013-04-30 15:17:34 cg Exp $' ! version_CVS - ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.141 2013-04-19 15:07:39 stefan Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.142 2013-04-30 15:17:34 cg Exp $' ! !