--- a/Number.st Tue Apr 16 14:27:04 2013 +0200
+++ b/Number.st Thu Apr 18 20:41:50 2013 +0200
@@ -188,6 +188,12 @@
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.
@@ -302,6 +308,9 @@
Number readFrom:'16rAAAAFFFFAAAAFFFF'
Number readFrom:'0.000001'
'+00000123.45' asNumber
+ Number readFrom:'(1/3)'
+ Number readFrom:'(-1/3)'
+ Number readFrom:'(-1/3'
Number readFrom:'99s'
Number readFrom:'99.00s'
Number readFrom:'99.0000000s'
@@ -371,19 +380,38 @@
(character-) aStream.
Returns nil if aStream contains no valid number."
- ^ Scanner scanNumberFrom:aStream
-"/ ^ Compiler evaluate:aStream compile:false "/ self readFrom:aStream.
+"/ this code fails on Fractions!!
+"/ ^ Scanner scanNumberFrom:aStream
+ |value|
+
+ [
+ value := Compiler
+ evaluate:aStream
+ in:nil
+ receiver:nil
+ notifying:nil
+ logged:false
+ ifFail:[^ nil]
+ compile:false.
+ ] on:Error do:[:ex|
+ ^ nil.
+ ].
+
+ (value isKindOf:self) ifFalse:[^ nil].
+
+ ^ value.
"
Number readSmalltalkSyntaxFrom:'99d'
Number readSmalltalkSyntaxFrom:'99.00d'
- Number readSmalltalkSyntaxFrom:(ReadStream on:'54.32e-01')
- Number readSmalltalkSyntaxFrom:(ReadStream on:'12345678901234567890')
- Number readSmalltalkSyntaxFrom:(ReadStream on:'16rAAAAFFFFAAAAFFFF')
- Number readSmalltalkSyntaxFrom:(ReadStream on:'(1/10)')
- Number readFrom:(ReadStream on:'(1/10)')
- Number readSmalltalkSyntaxFrom:(ReadStream on:'+00000123.45')
- Number readFrom:(ReadStream on:'+00000123.45')
+ Number readSmalltalkSyntaxFrom:'54.32e-01'
+ Number readSmalltalkSyntaxFrom:'12345678901234567890'
+ Number readSmalltalkSyntaxFrom:'16rAAAAFFFFAAAAFFFF'
+ Number readSmalltalkSyntaxFrom:'(1/10)'
+ Number readFrom:'(1/3)'
+ Number readFrom:'(-1/3)'
+ Number readSmalltalkSyntaxFrom:'+00000123.45'
+ Number readFrom:'+00000123.45'
|s|
s := ReadStream on:'2.'.
@@ -720,7 +748,6 @@
^ self truncated
! !
-
!Number methodsFor:'Compatibility-Squeak'!
asSmallAngleDegrees
@@ -2321,13 +2348,13 @@
"Modified: / 5.11.2001 / 17:54:22 / cg"
! !
-
!Number class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.137 2012-11-05 16:48:19 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.139 2013-04-17 10:37:35 stefan Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.137 2012-11-05 16:48:19 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.139 2013-04-17 10:37:35 stefan Exp $'
! !
+