Ok.
On Fri, Sep 14, 2012 at 11:06 PM, Levente Uzonyi leves@elte.hu wrote:
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@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!