[squeak-dev] The Trunk: Chronology-Core-cmm.15.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Oct 21 18:04:18 UTC 2018


Chris Muller uploaded a new version of Chronology-Core to project The Trunk:
http://source.squeak.org/trunk/Chronology-Core-cmm.15.mcz

==================== Summary ====================

Name: Chronology-Core-cmm.15
Author: cmm
Time: 18 October 2018, 3:06:21.843002 pm
UUID: 388f1031-54aa-49b4-a070-726ae1d5f489
Ancestors: Chronology-Core-tcj.12

- Add Timespan>>#beCanonical so that dates created via "myDateAndTime asDate" can be made canonical.
- 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 ] ]
  .!

Item was added:
+ ----- Method: Timespan>>beCanonical (in category 'squeak protocol') -----
+ beCanonical
+ 	"Make the receiver a canonical Date (or Month or Year) instead of a timespan of my duration starting at a specific local time.  Canonical are the most common use of Dates in applications."
+ 	self stripTimezone!

Item was added:
+ ----- Method: Timespan>>stripTimezone (in category 'squeak protocol') -----
+ stripTimezone
+ 	"Chronology preserves Timespans that are extracted from DateAndTime's, making Dates, Months and Years in Squeak able to represent a true Timespan of those durations starting at a specific local DateAndTime.  In case a canonical version is needed, make the receiver independent of any Timezone by removing it."
+ 	start primOffset: self class defaultOffset!



More information about the Squeak-dev mailing list