class: Number
authorClaus Gittinger <cg@exept.de>
Tue, 08 Oct 2013 15:29:00 +0200
changeset 15776 e7f5200ad493
parent 15775 94bd832a355e
child 15777 ad6042b8d17c
class: Number added: #readSmalltalkSyntaxFrom:onError: changed: #readSmalltalkSyntaxFrom:
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 $'
 ! !