class: Number
comment/format in: #readSmalltalkSyntaxFrom:
changed: #readFrom:decimalPointCharacters:onError:
allow reading sign(fraction)
--- 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 $'
! !