'From Squeak3.8beta of ''2 November 2004'' [latest update: #6371] on 14 November 2004 at 1:01:37 am'! "Change Set: IntegerReadFromBaseFix-369-v2-laza Date: 14 November 2004 Author: Alexander@Lazarevic.de Mantis-Bug: 369 This changes the method Integer readFrom:base: to do what the method comment says. That is to return 0 if there are no digits in the string (instead of raising an error). v2: Corrected method comment."! !Integer class methodsFor: 'instance creation' stamp: 'laza 11/14/2004 00:59'! readFrom: aStream base: base "Answer an instance of one of the concrete subclasses if Integer. Initial minus sign accepted, and bases > 10 use letters A-Z. Imbedded radix specifiers not allowed; use Number class readFrom: for that. Answer zero if there are no digits." | digit value neg | neg := aStream peekFor: $-. value := 0. [aStream atEnd] whileFalse: [digit := aStream next digitValue. (digit < 0 or: [digit >= base]) ifTrue: [aStream skip: -1. neg ifTrue: [^value negated]. ^value] ifFalse: [value := value * base + digit]]. neg ifTrue: [^value negated]. ^value! ! !Integer class methodsFor: 'compatibility' stamp: 'laza 10/16/2004 14:34'! readFrom: aStream radix: radix ^self readFrom: aStream base: radix! ! !IntegerTest methodsFor: 'testing - instance creation' stamp: 'laza 11/14/2004 00:14'! testIntegerReadFrom self assert: (Integer readFrom: '123' readStream base: 10) = 123. self assert: (Integer readFrom: '-123' readStream base: 10) = -123. self assert: (Integer readFrom: 'abc' readStream base: 10) = 0. self assert: (Integer readFrom: 'D12' readStream base: 10) = 0. self assert: (Integer readFrom: '1two3' readStream base: 10) = 1. ! !