Date.st
changeset 339 e8658d38abfb
parent 333 18e7d5971e16
child 362 4131e87e79ec
--- a/Date.st	Sat May 06 06:26:35 1995 +0200
+++ b/Date.st	Mon May 08 05:31:14 1995 +0200
@@ -22,7 +22,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libbasic/Date.st,v 1.20 1995-05-02 23:55:59 claus Exp $
+$Header: /cvs/stx/stx/libbasic/Date.st,v 1.21 1995-05-08 03:29:07 claus Exp $
 '!
 
 !Date class methodsFor:'documentation'!
@@ -43,7 +43,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libbasic/Date.st,v 1.20 1995-05-02 23:55:59 claus Exp $
+$Header: /cvs/stx/stx/libbasic/Date.st,v 1.21 1995-05-08 03:29:07 claus Exp $
 "
 !
 
@@ -616,28 +616,32 @@
        This method assumes american format (i.e. month-day-year) instead
        of the german/french and other day-month-year.
        There ought to be a nationalized variant of this."
-    
+
     |month day year aStream|
 
-    aStream := ReadStream on:aString.
-    [aStream peek isLetterOrDigit] whileFalse:[aStream next].
-    (aStream peek isDigit) ifTrue:[
-	day := Integer readFrom:aStream onError:[^ exceptionBlock value]
+    Object errorSignal handle:[:ex |
+	^ exceptionBlock value
+    ] do:[
+	aStream := ReadStream on:aString.
+	[aStream peek isLetterOrDigit] whileFalse:[aStream next].
+	(aStream peek isDigit) ifTrue:[
+	    day := Integer readFrom:aStream onError:[^ exceptionBlock value]
+	].
+	[aStream peek isLetterOrDigit] whileFalse:[aStream next].
+	(aStream peek isLetter) ifTrue:[
+	    month := aStream nextAlphaNumericWord.
+	    day isNil ifTrue:[
+		[aStream peek isLetterOrDigit] whileFalse:[aStream next].
+		day := Integer readFrom:aStream onError:[^ exceptionBlock value].
+	    ]
+	] ifFalse:[
+	    month := self nameOfMonth:day.
+	    day := Integer readFrom:aStream onError:[^ exceptionBlock value]
+	].
+	[aStream peek isLetterOrDigit] whileFalse:[aStream next].
+	year := Integer readFrom:aStream onError:[^ exceptionBlock value].
+	^ self newDay:day month:month year:year
     ].
-    [aStream peek isLetterOrDigit] whileFalse:[aStream next].
-    (aStream peek isLetter) ifTrue:[
-	month := aStream nextAlphaNumericWord.
-	day isNil ifTrue:[
-	    [aStream peek isLetterOrDigit] whileFalse:[aStream next].
-	    day := Integer readFrom:aStream onError:[^ exceptionBlock value].
-	]
-    ] ifFalse:[
-	month := self nameOfMonth:day.
-	day := Integer readFrom:aStream onError:[^ exceptionBlock value]
-    ].
-    [aStream peek isLetterOrDigit] whileFalse:[aStream next].
-    year := Integer readFrom:aStream onError:[^ exceptionBlock value].
-    ^ self newDay:day month:month year:year
 
     "
      Date readFromString:'31 December 1992'