[squeak-dev] The Inbox: MonticelloConfigurations-dtl.163.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Apr 15 23:57:13 UTC 2020
A new version of MonticelloConfigurations was added to project The Inbox:
http://source.squeak.org/inbox/MonticelloConfigurations-dtl.163.mcz
==================== Summary ====================
Name: MonticelloConfigurations-dtl.163
Author: dtl
Time: 14 April 2020, 12:11:50.986346 am
UUID: 81f8b3a4-f7a7-47dc-ae6d-d06e7a9b2854
Ancestors: MonticelloConfigurations-dtl.162
Add a UUID identifier field to MCConfigurationExtended
=============== Diff against MonticelloConfigurations-dtl.162 ===============
Item was changed:
----- Method: MCConfiguration class>>copyWithoutKeyPrefix: (in category 'private') -----
copyWithoutKeyPrefix: configArray
"Tokens in the version history portion of configArray are prefixed with $X to
prevent them being parsed in the original implementation of MCConfiguration.
Here we remove the prefixes prior to processing in the current implementation
with MCConfigurationExtended support."
| strm |
strm := #() writeStream.
configArray do: [ :token |
token caseOf: {
[#Xname ] -> [ strm nextPut: #name] .
[#Xrepository ] -> [ strm nextPut: #repository] .
[#Xdependency ] -> [ strm nextPut: #dependency] .
[#XmcmVersion] -> [ strm nextPut: #mcmVersion] .
+ [#Xid] -> [ strm nextPut: #id] .
[#XauthorInitials ] -> [ strm nextPut: #authorInitials] .
[#XtimeStamp ] -> [ strm nextPut: #timeStamp] .
[#Xcomment ] -> [ strm nextPut: #comment]
}
otherwise: [ strm nextPut: token]
].
^ strm contents.
!
Item was changed:
----- Method: MCConfigurationBrowser>>store (in category 'actions') -----
store
(self checkRepositories and: [self checkDependencies]) ifFalse: [^self].
self pickName ifNotNil: [:name |
configuration name: name.
self pickRepository ifNotNil: [:repo |
configuration comment: self enterVersionComment.
configuration authorInitials: Utilities authorInitials.
configuration timeStamp: ((DateAndTime fromSeconds: (DateAndTime now asSeconds)) printString).
+ configuration id: UUID new asString.
repo storeVersion: self configuration]].!
Item was changed:
MCConfiguration subclass: #MCConfigurationExtended
+ instanceVariableNames: 'mcmVersion id authorInitials timeStamp comment priorVersions'
- instanceVariableNames: 'mcmVersion authorInitials timeStamp comment priorVersions'
classVariableNames: ''
poolDictionaries: ''
category: 'MonticelloConfigurations'!
!MCConfigurationExtended commentStamp: 'dtl 4/13/2020 13:57' prior: 0!
A MCConfigurationExtended is a configuration with author initials, timestamp, comment, and a list of prior versions. Its external storage format is organized for compatibility with MCConfiguration, such that an image wtih support for only MCConfiguration can use configurations saved from a MCConfigurationExtended. The intended use is to enable documentation of configuration maps, and to allow modifications to a configuration map without loss of version history.!
Item was changed:
----- Method: MCConfigurationExtended>>= (in category 'comparing') -----
= configuration
+ ^ (((super = configuration
- ^ ((super = configuration
and: [configuration authorInitials = authorInitials])
and: [configuration timeStamp = timeStamp])
+ and: [configuration id = id])
+ and: [configuration comment = comment].
- and: [configuration comment = comment].
!
Item was changed:
----- Method: MCConfigurationExtended>>contentsOn:keyPrefix: (in category 'printing') -----
contentsOn: aStream keyPrefix: prefix
super contentsOn: aStream keyPrefix: prefix.
mcmVersion ifNotNil: [:ver |
aStream cr.
aStream nextPutAll: prefix,'mcmVersion '.
aStream print: ver].
+ id ifNotNil: [:uuid |
+ aStream cr.
+ aStream nextPutAll: prefix,'id '.
+ aStream print: uuid].
+
authorInitials ifNotNil: [:initials |
aStream cr.
aStream nextPutAll: prefix,'authorInitials '.
aStream print: initials].
timeStamp ifNotNil: [:ts |
aStream cr.
aStream nextPutAll: prefix,'timeStamp '.
aStream print: ts].
comment ifNotNil: [:c |
aStream cr.
aStream nextPutAll: prefix,'comment '.
aStream print: c].
"Keys in the prior versions have a prefix to prevent them being parsed
into a MCConfiguration when an image that does not contain support for the
newer MCConfigurationExtended format. This allows older images to read
an MCM file with extended format and version history, treating it as if it
were data for the original MCConfiguration."
priorVersions do: [:e | e copyWithoutHistory contentsOn: aStream keyPrefix: 'X'].
!
Item was changed:
----- Method: MCConfigurationExtended>>hash (in category 'comparing') -----
hash
+ ^ (super hash bitOr: timeStamp hash) bitXor: id.
- ^ super hash bitOr: timeStamp hash
!
Item was added:
+ ----- Method: MCConfigurationExtended>>id (in category 'accessing') -----
+ id
+ ^ id!
Item was added:
+ ----- Method: MCConfigurationExtended>>id: (in category 'accessing') -----
+ id: uuid
+ id := uuid!
Item was changed:
----- Method: MCConfigurationExtended>>initializeFromKey:value: (in category 'initialize') -----
initializeFromKey: key value: value
super initializeFromKey: key value: value.
key = #mcmVersion
ifTrue: [mcmVersion := value].
+ key = #id
+ ifTrue: [id := value].
key = #authorInitials
ifTrue: [authorInitials := value].
key = #timeStamp
ifTrue: [timeStamp := value].
key = #comment
ifTrue: [comment := value].
!
Item was changed:
----- Method: MCConfigurationExtended>>printOn: (in category 'printing') -----
printOn: aStream
super printOn: aStream.
+ aStream nextPutAll: ' ', name asString, ' ', timeStamp asString, ' (', id asString, ')'.!
- aStream nextPutAll: ' named ', name asString, ' (', timeStamp asString, ')'.!
More information about the Squeak-dev
mailing list
|