[squeak-dev] The Inbox: System-cmm.497.mcz

Levente Uzonyi leves at elte.hu
Sat Sep 15 04:06:58 UTC 2012


Two things about the implementation:
- using #isOctetCharacter is not good enough. When I wrote ascii, I meant 
the 7-bit US-ASCII characters. For example $á is both #isOctetCharacter 
and #isAlphaNumeric, but I don't think it should appear in a method's 
timestamp.
- some methods have Smalltalk123 as author


Levente

On Fri, 14 Sep 2012, commits at source.squeak.org wrote:

> A new version of System was added to project The Inbox:
> http://source.squeak.org/inbox/System-cmm.497.mcz
>
> ==================== Summary ====================
>
> Name: System-cmm.497
> Author: cmm
> Time: 14 September 2012, 3:14:45.552 pm
> UUID: d55d42e9-1782-4cdd-a0d0-253bf60940f5
> Ancestors: System-ul.496
>
> Updates for the Author proposal:
>
> 	- Completely separate the model from the UI.  Author should be a "pure domain object."  The PerSe methods are no longer needed.
>
> 	- Instead, let Utilities class take responsibility for employing Squeak UI-elements to set the current Author attributes, as well as for being the "convenient" way to access these attributes.
>
> 	- Since we are reifying an Author from a String, it is now treated as a whole Author object, rather than just a String-holder.  Allow multiple Author instances to exist and the #current Author can be swapped out with another Author instance.
>
> =============== Diff against System-ul.496 ===============
>
> Item was removed:
> - ----- Method: Author class>>changeStamp (in category 'convenience') -----
> - changeStamp
> -
> - 	^self current changeStamp!
>
> Item was removed:
> - ----- Method: Author class>>changeStampPerSe (in category 'convenience') -----
> - changeStampPerSe
> -
> - 	^self current changeStampPerSe!
>
> Item was changed:
>  ----- Method: Author class>>current (in category 'instance creation') -----
>  current
> + 	^ instance ifNil:
> + 		[ self current: self new.
> + 		instance ]!
> -
> - 	^instance ifNil: [ instance := super new ]!
>
> Item was added:
> + ----- Method: Author class>>current: (in category 'class initialization') -----
> + current: anAuthor
> + 	instance := anAuthor!
>
> Item was changed:
>  ----- Method: Author class>>fullNamePerSe (in category 'pharo compatibility') -----
>  fullNamePerSe
> + 	^ self current initials!
> -
> - 	^self initialsPerSe!
>
> Item was removed:
> - ----- Method: Author class>>initials (in category 'convenience') -----
> - initials
> -
> - 	^self current initials!
>
> Item was removed:
> - ----- Method: Author class>>initialsPerSe (in category 'convenience') -----
> - initialsPerSe
> -
> - 	^self current initialsPerSe!
>
> Item was removed:
> - ----- Method: Author class>>new (in category 'instance creation') -----
> - new
> -
> - 	self error: 'Use #current'!
>
> Item was changed:
>  ----- Method: Author class>>reset (in category 'instance creation') -----
>  reset
> + 	self current: nil!
> -
> - 	instance := nil!
>
> Item was changed:
>  ----- Method: Author class>>useAuthor:during: (in category 'pharo compatibility') -----
> + useAuthor: aString during: aBlock
> + 	^ self current
> + 		useInitials: aString
> + 		during: aBlock!
> - useAuthor: aString during: aBlock
> -
> - 	^self useInitials: aString during: aBlock!
>
> Item was removed:
> - ----- Method: Author class>>useInitials:during: (in category 'convenience') -----
> - useInitials: aString during: aBlock
> -
> - 	^self current useInitials: aString during: aBlock!
>
> Item was removed:
> - ----- Method: Author class>>username (in category 'convenience') -----
> - username
> -
> - 	^self current username!
>
> Item was removed:
> - ----- Method: Author class>>usernamePerSe (in category 'convenience') -----
> - usernamePerSe
> -
> - 	^self current usernamePerSe!
>
> Item was changed:
>  ----- Method: Author>>changeStamp (in category 'accessing') -----
>  changeStamp
> + 	^ self changeStampWithInitials: (self initials ifEmpty: [ 'unknown' ])!
> -
> - 	^self changeStampWithInitials: self initials!
>
> Item was removed:
> - ----- Method: Author>>changeStampPerSe (in category 'accessing') -----
> - changeStampPerSe
> -
> - 	^self changeStampWithInitials: (self initialsPerSe ifEmpty: [ '.' ])!
>
> Item was changed:
>  ----- Method: Author>>fullName (in category 'pharo compatibility') -----
>  fullName
> + 	^ self initials!
> -
> - 	^self initials!
>
> Item was removed:
> - ----- Method: Author>>fullNamePerSe (in category 'pharo compatibility') -----
> - fullNamePerSe
> -
> - 	^self initialsPerSe!
>
> Item was changed:
>  ----- Method: Author>>initialize (in category 'initialize-release') -----
>  initialize
> -
>  	super initialize.
> + 	initials := username := String empty!
> - 	initials := String new.
> - 	username := String new
> - 	!
>
> Item was changed:
>  ----- Method: Author>>initials (in category 'accessing') -----
>  initials
> + 	^ initials!
> -
> - 	^initials ifEmpty: [ self requestAndSetInitials ]!
>
> Item was removed:
> - ----- Method: Author>>initialsPerSe (in category 'accessing') -----
> - initialsPerSe
> -
> - 	^initials!
>
> Item was removed:
> - ----- Method: Author>>requestAndSetInitials (in category 'accessing') -----
> - requestAndSetInitials
> -
> - 	^initials := (UIManager default
> - 		request: 'Please type your initials: ' translated
> - 		initialAnswer: initials) select: [ :each |
> - 			#(
> - 				($A $Z)
> - 				($a $z)
> - 				($0 $9)) anySatisfy: [ :range |
> - 					each between: range first and: range second ] ]!
>
> Item was removed:
> - ----- Method: Author>>requestAndSetUsername (in category 'accessing') -----
> - requestAndSetUsername
> -
> - 	^username := UIManager default
> - 		request: 'Please type your name:' translated
> - 		initialAnswer: (username
> - 			ifEmpty: [ 'Your Name' translated ]
> - 			ifNotEmpty: [ username ])!
>
> Item was changed:
>  ----- Method: Author>>username (in category 'accessing') -----
>  username
> + 	^ username!
> -
> - 	^username ifEmpty: [ self requestAndSetUsername ]!
>
> Item was removed:
> - ----- Method: Author>>usernamePerSe (in category 'accessing') -----
> - usernamePerSe
> -
> - 	^username!
>
> Item was changed:
>  ----- Method: SpaceTally>>spaceTally: (in category 'class analysis') -----
> + spaceTally: classes
> - spaceTally: classes
>  	"Answer a collection of SpaceTallyItems representing the memory space (in bytes) consumed 	by the code and instances of each class in the system. Note that code sizes do not currently 	report memory consumed by class variables. "
> -
>  	"((SpaceTally new spaceTally: (Array with: TextMorph with: Point)) asSortedCollection: [:a :b | a spaceForInstances > b spaceForInstances]) asArray"
> -
>  	self preAllocateResultsFor: classes.
>  	Smalltalk garbageCollect.
>  	self computeSpaceUsage.
>  	^ results
> + 		 sort: [ : a : b | a spaceForInstances > b spaceForInstances ] ;
> + 		 yourself!
> - !
>
> Item was changed:
>  ----- Method: Utilities class>>authorInitials (in category 'identification') -----
>  authorInitials
> + 	"Answer the initials to be used to identify the current code author."
> + 	^ self authorInitialsPerSe ifEmpty:
> + 		[ self
> + 			 setAuthorInitials ;
> + 			 authorInitialsPerSe ]!
> - 	"Answer the initials to be used to identify the current code author.  "
> -
> - 	^Author initials!
>
> Item was changed:
>  ----- Method: Utilities class>>authorInitialsPerSe (in category 'identification') -----
>  authorInitialsPerSe
> + 	^ Author current initials!
> - 	"Answer the currently-prevailing author initials, such as they, empty or not"
> -
> - 	^Author initialsPerSe!
>
> Item was changed:
>  ----- Method: Utilities class>>authorName (in category 'identification') -----
>  authorName
> + 	^ self authorNamePerSe ifEmpty:
> + 		[ self
> + 			 setAuthorName ;
> + 			 authorNamePerSe ]!
> -
> - 	^Author username!
>
> Item was changed:
>  ----- Method: Utilities class>>authorNamePerSe (in category 'identification') -----
>  authorNamePerSe
> + 	^ Author current username!
> -
> - 	^Author usernamePerSe!
>
> Item was changed:
>  ----- Method: Utilities class>>changeStamp (in category 'identification') -----
> + changeStamp
> + 	^ Author current changeStampWithInitials: self authorInitials!
> - changeStamp
> -
> - 	^Author changeStamp!
>
> Item was changed:
>  ----- Method: Utilities class>>changeStampPerSe (in category 'identification') -----
>  changeStampPerSe
> + 	^ Author current changeStamp!
> -
> - 	^Author changeStampPerSe!
>
> Item was changed:
>  ----- Method: Utilities class>>setAuthorInitials (in category 'identification') -----
>  setAuthorInitials
>  	"Put up a dialog allowing the user to specify the author's initials.  "
> + 	| oldInitials |
> + 	oldInitials := Author current initials.
> + 	Author reset.
> + 	Author current initials:
> + 		((UIManager default
> + 			request: 'Please type your initials: ' translated
> + 			initialAnswer: oldInitials) select: [ : each | each isOctetCharacter and: [ each isAlphaNumeric ] ])!
> -
> - 	^Author current requestAndSetInitials!
>
> Item was changed:
>  ----- Method: Utilities class>>setAuthorName (in category 'identification') -----
>  setAuthorName
> + 	Author current username:
> + 		(UIManager default
> + 			request: 'Please type your name:' translated
> + 			initialAnswer: (Author current username ifEmpty: [ 'Your Name' translated ]))!
> -
> - 	Author requestAndSetUsername!
>
>
>


More information about the Squeak-dev mailing list