[squeak-dev] The Inbox: Chronology-Core-cmm.14.mcz
bert at freudenbergs.de
Thu Oct 18 17:26:40 UTC 2018
I'm not sure this is right.
The current implementation comes from the "trunk thinks its tomorrow"
discussion starting on 17 Feb 2016. As a result we introduced the
"noTimezone" notion: a date without timezone compares equal to the same
date in any time zone. At some point this made all the tests green.
- Bert -
On Wed, Oct 17, 2018 at 8:53 PM Chris Cunningham <cunningham.cb at gmail.com>
> I like this.
> Although I notice that the comparison makes sure that the classes are the
> same - so a Timespan starting at the exact same time as a Date and with 24
> hour duration is not the same as a Date with the exact same values.
> This would allow further speedups if Date, Week, Month, and Year if we
> wanted - just drop the comparison of duration in those classes. (The
> general case is still needed to tell Timespan apart from Schedule.)
> If you did that, you probably also want to re-implement hash as well -
> simplifying it the same way.
> On Wed, Oct 17, 2018 at 8:07 PM <commits at source.squeak.org> wrote:
>> Chris Muller uploaded a new version of Chronology-Core to project The
>> ==================== Summary ====================
>> Name: Chronology-Core-cmm.14
>> Author: cmm
>> Time: 17 October 2018, 10:07:14.485014 pm
>> UUID: 5d93900c-4a4e-4a4e-80f3-800dbdb07d0b
>> Ancestors: Chronology-Core-tcj.12
>> - A fix and optimization of Timespan>>#=. Both elements being compared
>> must have the same timezone (or same state of #noTimezone) in order to take
>> advantage of the optimized #hasEqualTicks: comparison. Otherwise (if
>> different timezones), a full comparison of their starts (via #=) is needed.
>> - There was a mention of this optimization put into the class comment.
>> This level of detail may be a bit tedious for users to read at that level,
>> so Brents original comment was restored.
>> =============== Diff against Chronology-Core-tcj.12 ===============
>> Item was changed:
>> Magnitude subclass: #Timespan
>> instanceVariableNames: 'start duration'
>> classVariableNames: ''
>> poolDictionaries: ''
>> category: 'Chronology-Core'!
>> + !Timespan commentStamp: 'cmm 10/17/2018 22:00' prior: 0!
>> + I represent a duration starting on a specific DateAndTime.!
>> - !Timespan commentStamp: 'bf 2/18/2016 14:43' prior: 0!
>> - I represent a duration starting on a specific DateAndTime.
>> - If my start has an offset identical to my #defaultOffset then
>> comparisons ignore timezone offset.!
>> Item was changed:
>> ----- Method: Timespan>>= (in category 'ansi protocol') -----
>> = comparand
>> + ^ self class = comparand class
>> + and: [(((self noTimezone and: [comparand noTimezone]) or: [self
>> start offset = comparand start offset])
>> + ifTrue: [ self start hasEqualTicks: comparand start ]
>> + ifFalse: [ self start = comparand start ])
>> + and: [ self duration = comparand duration ] ]
>> - ^ self class = comparand class
>> - and: [((self noTimezone or: [ comparand noTimezone ])
>> - ifTrue: [ self start hasEqualTicks: comparand
>> start ]
>> - ifFalse: [ self start = comparand start ])
>> - and: [ self duration = comparand duration ] ]
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Squeak-dev