[squeak-dev] The Inbox: Morphic-ct.1905.mcz

Marcel Taeumel marcel.taeumel at hpi.de
Thu Feb 24 11:17:34 UTC 2022


Hi Christoph --

+1 but be careful to answer 'nil' in such cases:

...
otherProperties ifNil: [^ self].

...

Best,
Marcel
Am 24.02.2022 11:59:30 schrieb commits at source.squeak.org <commits at source.squeak.org>:
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1905.mcz

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

Name: Morphic-ct.1905
Author: ct
Time: 24 February 2022, 11:59:10.222147 am
UUID: ac4eb336-4623-5f48-9485-b4e46c636580
Ancestors: Morphic-mt.1904

Proposal: For Morph extensions, establish the common return value semantics known from most other collection protocols. I.e., #setProperty:... now answers the added value and #removeProperty: answers the removed value.

This can also help us to clean up a number of senders, browse this for an impression:
self systemNavigation browseAllCallsOn: #removeProperty: and: #valueOfProperty:

=============== Diff against Morphic-mt.1904 ===============

Item was changed:
----- Method: Morph>>removeProperty: (in category 'accessing - properties') -----
removeProperty: aSymbol
+ "Remove the property named aSymbol if it exists. Answer the old value or nil."
- "removes the property named aSymbol if it exists"
extension ifNil: [^ self].
+ ^ extension removeProperty: aSymbol!
- extension removeProperty: aSymbol!

Item was changed:
----- Method: Morph>>setProperties: (in category 'accessing - properties') -----
setProperties: aList
+ "Set many properties at once from a list of prop, value, prop, value. Answer the list."
- "Set many properties at once from a list of prop, value, prop, value"

1 to: aList size by: 2 do: [:ii |
+ self setProperty: (aList at: ii) toValue: (aList at: ii+1)].
+ ^ aList!
- self setProperty: (aList at: ii) toValue: (aList at: ii+1)].!

Item was changed:
----- Method: Morph>>setProperty:toValue: (in category 'accessing - properties') -----
setProperty: aSymbol toValue: anObject
+ "Change the receiver's property named aSymbol to anObject. Answer anObject."
- "change the receiver's property named aSymbol to anObject"
anObject ifNil: [^ self removeProperty: aSymbol].
+ ^ self assureExtension setProperty: aSymbol toValue: anObject!
- self assureExtension setProperty: aSymbol toValue: anObject!

Item was changed:
----- Method: MorphExtension>>removeProperty: (in category 'accessing - other properties') -----
removeProperty: aSymbol
+ "Removes the property named aSymbol if it exists. Answer the old value or nil."
+ | value |
- "removes the property named aSymbol if it exists"
otherProperties ifNil: [^ self].
+ value := otherProperties removeKey: aSymbol ifAbsent: [].
+ otherProperties isEmpty ifTrue: [self removeOtherProperties].
+ ^ value!
- otherProperties removeKey: aSymbol ifAbsent: [].
- otherProperties isEmpty ifTrue: [self removeOtherProperties]!

Item was changed:
----- Method: MorphExtension>>setProperty:toValue: (in category 'accessing - other properties') -----
setProperty: aSymbol toValue: abObject
+ "Change the receiver's property named aSymbol to anObject. Answer anObject."
+ ^ self assureOtherProperties at: aSymbol put: abObject!
- "change the receiver's property named aSymbol to anObject"
- self assureOtherProperties at: aSymbol put: abObject!


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220224/b9e5fbce/attachment.html>


More information about the Squeak-dev mailing list