[squeak-dev] The Trunk: Kernel-tfel.236.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Sep 3 02:59:33 UTC 2009
Andreas Raab uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-tfel.236.mcz
==================== Summary ====================
Name: Kernel-tfel.236
Author: tfel
Time: 2 September 2009, 11:07 am
UUID: c52f7e22-0347-48b2-b827-77855c248e2d
Ancestors: Kernel-tfel.235
This fixes Bug #0006764 where Duration couldn't deal with trailing spaces properly.
=============== Diff against Kernel-tfel.235 ===============
Item was changed:
----- Method: Duration class>>readFrom: (in category 'squeak protocol') -----
readFrom: aStream
+ "Formatted as per ANSI 5.8.2.16: [-]D:HH:MM:SS[.S]"
- "Formatted as per ANSI 5.8.2.16: [-]D:HH:MM:SS[.S]
- To assiste DateAndTime>>#readFrom: SS may be unpadded or absent."
-
- | sign days hours minutes seconds nanos ws ch |
- sign := (aStream peekFor: $-) ifTrue: [-1] ifFalse: [1].
-
- days := (aStream upTo: $:) asInteger sign: sign.
- hours := (aStream upTo: $:) asInteger sign: sign.
- minutes := (aStream upTo: $:) asInteger sign: sign.
+ | sign days hours minutes seconds nanos nanosBuffer |
+ sign := (aStream peekFor: $-) ifTrue: [-1] ifFalse: [1].
+ days := (aStream upTo: $:) asInteger sign: sign.
+ hours := (aStream upTo: $:) asInteger sign: sign.
+ minutes := (aStream upTo: $:) asInteger sign: sign.
+ seconds := (aStream upTo: $.) asInteger sign: sign.
+ nanosBuffer := '000000000' copy.
+ nanos := WriteStream on: nanosBuffer.
+ [aStream atEnd not and: [aStream peek isDigit]]
+ whileTrue: [nanos nextPut: aStream next].
+
+ ^ self
+ days: days
+ hours: hours
+ minutes: minutes
+ seconds: seconds
+ nanoSeconds: (nanosBuffer asInteger sign: sign)
- aStream atEnd
- ifTrue: [seconds := 0. nanos := 0]
- ifFalse:
- [ ws := String new writeStream.
- [ch := aStream next. (ch isNil) | (ch = $.)]
- whileFalse: [ ws nextPut: ch ].
- seconds := ws contents asInteger sign: sign.
- ws reset.
- 9 timesRepeat:
- [ ch := aStream next.
- ws nextPut: (ch ifNil: [$0] ifNotNil: [ch]) ].
- nanos := ws contents asInteger sign: sign].
-
- ^ self days: days hours: hours minutes: minutes seconds: seconds nanoSeconds: nanos.
" '0:00:00:00' asDuration
'0:00:00:00.000000001' asDuration
'0:00:00:00.999999999' asDuration
'0:00:00:00.100000000' asDuration
+ '0:00:00:00.001 ' asDuration
- '0:00:00:00.10' asDuration
'0:00:00:00.1' asDuration
+ '0:00:00:01 ' asDuration
- '0:00:00:01' asDuration
'0:12:45:45' asDuration
'1:00:00:00' asDuration
'365:00:00:00' asDuration
'-7:09:12:06.10' asDuration
- '+0:01:02' asDuration
'+0:01:02:3' asDuration
"!
Item was changed:
----- Method: DateAndTime class>>readFrom: (in category 'squeak protocol') -----
readFrom: aStream
| offset date time ch |
date := Date readFrom: aStream.
[aStream peek isDigit]
whileFalse: [aStream next].
time := Time readFrom: aStream.
aStream atEnd
ifTrue: [ offset := self localOffset ]
ifFalse: [
ch := aStream next.
ch = $+ ifTrue: [ch := Character space].
+ offset := Duration fromString: ch asString, '0:', aStream upToEnd, ':0'].
- offset := Duration fromString: ch asString, '0:', aStream upToEnd].
^ self
year: date year
month: date monthIndex
day: date dayOfMonth
hour: time hour
minute: time minute
second: time second
nanoSecond: time nanoSecond
offset: offset
" '-1199-01-05T20:33:14.321-05:00' asDateAndTime
' 2002-05-16T17:20:45.1+01:01' asDateAndTime
' 2002-05-16T17:20:45.02+01:01' asDateAndTime
' 2002-05-16T17:20:45.003+01:01' asDateAndTime
' 2002-05-16T17:20:45.0004+01:01' asDateAndTime
' 2002-05-16T17:20:45.00005' asDateAndTime
' 2002-05-16T17:20:45.000006+01:01' asDateAndTime
' 2002-05-16T17:20:45.0000007+01:01' asDateAndTime
' 2002-05-16T17:20:45.00000008-01:01' asDateAndTime
' 2002-05-16T17:20:45.000000009+01:01' asDateAndTime
' 2002-05-16T17:20:45.0000000001+01:01' asDateAndTime
' 2002-05-16T17:20' asDateAndTime
' 2002-05-16T17:20:45' asDateAndTime
' 2002-05-16T17:20:45+01:57' asDateAndTime
' 2002-05-16T17:20:45-02:34' asDateAndTime
' 2002-05-16T17:20:45+00:00' asDateAndTime
' 1997-04-26T01:02:03+01:02:3' asDateAndTime
"!
Item was changed:
----- Method: Time class>>readFrom: (in category 'smalltalk-80') -----
readFrom: aStream
"Read a Time from the stream in the form:
<hour>:<minute>:<second> <am/pm>
<minute>, <second> or <am/pm> may be omitted. e.g. 1:59:30 pm; 8AM; 15:30"
| hour minute second ampm nanos nanosBuffer |
hour := Integer readFrom: aStream.
minute := 0.
second := 0.
nanosBuffer := '000000000' copy.
+ nanos := WriteStream on: nanosBuffer.
- nanos := ReadWriteStream on: nanosBuffer.
(aStream peekFor: $:)
ifTrue: [
minute := Integer readFrom: aStream.
(aStream peekFor: $:)
ifTrue: [
second := Integer readFrom: aStream].
(aStream peekFor: $.)
ifTrue: [
[aStream atEnd not and: [aStream peek isDigit]]
whileTrue: [nanos nextPut: aStream next]]].
aStream skipSeparators.
(aStream atEnd not and: [aStream peek isLetter]) ifTrue:
[ampm := aStream next asLowercase.
(ampm = $p and: [hour < 12]) ifTrue: [hour := hour + 12].
(ampm = $a and: [hour = 12]) ifTrue: [hour := 0].
(aStream peekFor: $m) ifFalse: [aStream peekFor: $M ]].
^ self
hour: hour
minute: minute
second: second
nanoSecond: nanosBuffer asInteger
"Time readFrom: (ReadStream on: '2:23:09 pm')"!
More information about the Squeak-dev
mailing list
|