--- a/Time.st Tue Nov 04 10:14:09 2008 +0100
+++ b/Time.st Tue Nov 04 14:51:21 2008 +0100
@@ -151,7 +151,7 @@
either 24 hour format or being am."
^ [
- |str hour min sec|
+ |str hour min sec peekC|
str := aStringOrStream readStream.
@@ -161,7 +161,8 @@
min := 0.
sec := 0.
str atEnd ifFalse:[
- (str peek == $:) ifTrue:[
+ peekC := str peek.
+ (peekC == $:) ifTrue:[
str next.
min := Integer readFrom:str.
(min between:0 and:59) ifFalse:[^ exceptionBlock value].
@@ -171,9 +172,10 @@
sec := Integer readFrom:str.
(sec between:0 and:59) ifFalse:[^ exceptionBlock value].
].
+ peekC := str peek.
].
- [str peek == Character space] whileTrue:[str next].
- (str peek == $p or:[str peek == $P]) ifTrue:[
+ [peekC == Character space] whileTrue:[str next. peekC := str peek].
+ (peekC == $p or:[peekC == $P]) ifTrue:[
str next.
(str peek == $m or:[str peek == $M]) ifTrue:[
str next
@@ -183,9 +185,10 @@
"pm"
hour ~~ 12 ifTrue:[
hour := hour + 12
- ]
+ ].
+ peekC := str peek
] ifFalse:[
- (str peek == $a or:[str peek == $A]) ifTrue:[
+ (peekC == $a or:[peekC == $A]) ifTrue:[
str next.
(str peek == $m or:[str peek == $M]) ifTrue:[
str next
@@ -194,7 +197,12 @@
hour := 0.
].
hour > 12 ifTrue:[^ exceptionBlock value].
- ]
+ peekC := str peek
+ ] ifFalse:[
+ peekC notNil ifTrue:[
+ peekC isSeparator ifFalse:[^ exceptionBlock value].
+ ]
+ ].
]
].
self basicNew setHours:hour minutes:min seconds:sec
@@ -716,5 +724,5 @@
!Time class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Time.st,v 1.83 2008-09-06 10:45:31 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Time.st,v 1.84 2008-11-04 13:51:21 cg Exp $'
! !