[squeak-dev] differently organized method categories in the Debugger
dnu: create process
Paul DeBruicker
pdebruic at gmail.com
Thu Nov 1 20:32:26 UTC 2012
Hi-
When I create methods using the Debugger's 'Create' button I am never
sure which categories are used in the class I'm adding the method to
versus those in its super classes. In an effort to not have to think
about that any more I've adapted the
ClassDescription>>#allMethodCategoriesIntegratedThrough: to put the
method categories that are used in the target class first, then those in
the super classes after that.
I think this should work in Pharo and Squeak but I've only tested it in
Pharo 1.4. I've attached a changeset and also pasted the method below
Paul
allMethodCategoriesIntegratedThrough: mostGenericClass
"Answer a list of all the method categories of the receiver and all its
superclasses, up through mostGenericClass"
| otherClassCategories thisClassCategories combinedClassCategories |
otherClassCategories := OrderedCollection new.
self allSuperclasses
do: [ :aClass |
(aClass includesBehavior: mostGenericClass)
ifTrue: [ otherClassCategories addAll: aClass organization
categories ] ].
otherClassCategories remove: 'no messages' asSymbol ifAbsent: [ ].
thisClassCategories := self organization categories asSortedCollection:
[ :a :b | a asLowercase < b asLowercase ].
^ Array
streamContents: [ :stream |
stream
nextPutAll: thisClassCategories;
nextPutAll:
((otherClassCategories asSet removeAllSuchThat: [ :each |
thisClassCategories includes: each ])
asSortedCollection: [ :a :b | a asLowercase < b asLowercase ]) ]
-------------- next part --------------
'From Pharo1.4 of 18 April 2012 [Latest update: #14457] on 1 November 2012 at 1:29:30 pm'!
!ClassDescription methodsFor: 'accessing method dictionary' stamp: 'PaulDeBruicker 11/1/2012 13:18'!
allMethodCategoriesIntegratedThrough: mostGenericClass
"Answer a list of all the method categories of the receiver and all its superclasses, up through mostGenericClass"
| otherClassCategories thisClassCategories combinedClassCategories |
otherClassCategories := OrderedCollection new.
self allSuperclasses
do: [ :aClass |
(aClass includesBehavior: mostGenericClass)
ifTrue: [ otherClassCategories addAll: aClass organization categories ] ].
otherClassCategories remove: 'no messages' asSymbol ifAbsent: [ ].
thisClassCategories := self organization categories asSortedCollection: [ :a :b | a asLowercase < b asLowercase ].
^ Array
streamContents: [ :stream |
stream
nextPutAll: thisClassCategories;
nextPutAll:
((otherClassCategories asSet removeAllSuchThat: [ :each | thisClassCategories includes: each ])
asSortedCollection: [ :a :b | a asLowercase < b asLowercase ]) ]! !
More information about the Squeak-dev
mailing list
|