'From Squeak3.8alpha of ''17 July 2004'' [latest update: #6325] on 18 October 2004 at 6:16:27 pm'! "Change Set: undo6216 Date: 18 October 2004 Author: Marcus Denker undo of 6216, because it it buggy. ([BUG][FIX] ScaledDecimal and Number class>>ReadFrom:) See the included NumberTest>>testReadFrom for the examples that break"! !Number class methodsFor: 'private' stamp: 'RAH 4/25/2000 19:49'! readRemainderOf: integerPart from: aStream base: base withSign: sign "Read optional fractional part and exponent, and return the final result" | value fraction fractionDigits fracpos peekChar scale | #Numeric. "Changed 200/01/19 For ANSI Numeric Literals support." value := integerPart. fractionDigits := 0. (aStream peekFor: $.) ifTrue: ["." (aStream atEnd not and: [aStream peek digitValue between: 0 and: base - 1]) ifTrue: [fracpos := aStream position. fraction := Integer readFrom: aStream base: base. fraction := fraction asFloat / (base raisedTo: aStream position - fracpos). fractionDigits := aStream position - fracpos. value := value asFloat + fraction] ifFalse: ["oops - just ." aStream skip: -1. "un-gobble the period" ^ value * sign"Number readFrom: '3r-22.2'"]]. peekChar := aStream peek. "(e|d|q)>" peekChar = $e | (peekChar = $d) | (peekChar = $q) ifTrue: [aStream next. value := value * (base raisedTo: (Integer readFrom: aStream))] ifFalse: [peekChar = $s ifTrue: ["s[]" aStream next. (aStream atEnd not and: ["s" aStream peek digitValue between: 0 and: 10]) ifTrue: [scale := Integer readFrom: aStream]. scale isNil ifTrue: ["s" fractionDigits = 0 ifTrue: ["s" scale := 0] ifFalse: [".s" scale := fractionDigits]]. value := ScaledDecimal newFromNumber: value scale: scale]]. (value isFloat and: [value = 0.0 and: [sign = -1]]) ifTrue: [^ Float negativeZero] ifFalse: [^ value * sign]! ! !NumberTest methodsFor: 'as yet unclassified' stamp: 'md 10/18/2004 18:08'! testReadFrom self assert: 1.0e-14 = (Number readFrom: '1.0e-14'). self assert: 2r1e26 = (Number readFrom: '2r1e26').! ! Number class removeSelector: #canParseAsFloat:base:from:! Number class removeSelector: #canParseAsFloatOrScaledDecimal:integerPart:fractionPart:digits:base:sign:from:! Number class removeSelector: #canParseAsScaledDecimal:fractionPart:digits:base:sign:from:! Number class removeSelector: #readFloat:base:from:! Number class removeSelector: #readScaledDecimal:fractionPart:digits:base:sign:from:!