On both Squeak 3.9 (I supose others too) and Pharo:
Fraction readFromString: '1/2' ---> 1
'1/2' asNumber ---> 1
fix
Number #readFrom: stringOrStream
"Answer a number as described on aStream. The number may
include a leading radix specification, as in 16rFADE"
| value base aStream sign |
aStream _ (stringOrStream isString)
ifTrue: [ReadStream on: stringOrStream]
ifFalse: [stringOrStream].
(aStream nextMatchAll: 'NaN') ifTrue: [^ Float nan].
sign _ (aStream peekFor: $-) ifTrue: [-1] ifFalse: [1].
(aStream nextMatchAll: 'Infinity') ifTrue: [^ Float infinity * sign].
base _ 10.
value _ Integer readFrom: aStream base: base.
"this line "
(aStream peekFor: $/) ifTrue:[^Fraction numerator: value denominator:
(aStream upTo: $\) asInteger].
" added "
(aStream peekFor: $r)
ifTrue:
["<base>r<integer>"
(base _ value) < 2 ifTrue: [^self error: 'Invalid radix'].
(aStream peekFor: $-) ifTrue: [sign _ sign negated].
value _ Integer readFrom: aStream base: base].
^ self readRemainderOf: value from: aStream base: base withSign: sign.
--
Norberto Manzanos
Instituto de Investigaciones en Humanidades y Ciencias Sociales (IdIHCS)
FaHCE/UNLP - CONICET
Calle 48 e/ 6 y 7 s/Nº - 8º piso - oficina 803
Tel: +54-221-4230125 interno 262