[squeak-dev] The Trunk: FlexibleVocabularies-nice.10.mcz
commits at source.squeak.org
commits at source.squeak.org
Sun Dec 27 19:40:15 UTC 2009
Nicolas Cellier uploaded a new version of FlexibleVocabularies to project The Trunk:
http://source.squeak.org/trunk/FlexibleVocabularies-nice.10.mcz
==================== Summary ====================
Name: FlexibleVocabularies-nice.10
Author: nice
Time: 27 December 2009, 8:40:06 am
UUID: c5ed1395-f5a0-4347-8596-8677a1921160
Ancestors: FlexibleVocabularies-nice.9
Cosmetic: move or remove a few temps inside closures
=============== Diff against FlexibleVocabularies-nice.9 ===============
Item was changed:
----- Method: EToyVocabulary>>initialize (in category '*flexibleVocabularies-flexiblevocabularies-initialization') -----
initialize
"Initialize the receiver (automatically called when instances are created via 'new')"
+ | classes categorySymbols |
- | classes aMethodCategory selector selectors categorySymbols aMethodInterface |
super initialize.
self vocabularyName: #eToy.
self documentation: '"EToy" is a vocabulary that provides the equivalent of the 1997-2000 etoy prototype'.
categorySymbols := Set new.
classes := self class morphClassesDeclaringViewerAdditions.
classes do:
[:aMorphClass | categorySymbols addAll: aMorphClass unfilteredCategoriesForViewer].
self addCustomCategoriesTo: categorySymbols. "For benefit, e.g., of EToyVectorVocabulary"
categorySymbols asOrderedCollection do:
+ [:aCategorySymbol | | selectors aMethodCategory |
- [:aCategorySymbol |
aMethodCategory := ElementCategory new categoryName: aCategorySymbol.
selectors := Set new.
classes do:
[:aMorphClass |
(aMorphClass additionsToViewerCategory: aCategorySymbol) do:
+ [:anElement | | selector aMethodInterface |
- [:anElement |
aMethodInterface := self methodInterfaceFrom: anElement.
selectors add: (selector := aMethodInterface selector).
(methodInterfaces includesKey: selector) ifFalse:
[methodInterfaces at: selector put: aMethodInterface].
self flag: #deferred.
"NB at present, the *setter* does not get its own method interface. Need to revisit"].
(selectors copyWithout: #unused) asSortedArray do:
[:aSelector |
aMethodCategory elementAt: aSelector put: (methodInterfaces at: aSelector)]].
self addCategory: aMethodCategory].
self addCategoryNamed: ScriptingSystem nameForInstanceVariablesCategory.
self addCategoryNamed: ScriptingSystem nameForScriptsCategory.
self setCategoryDocumentationStrings.
(self respondsTo: #applyMasterOrdering)
ifTrue: [ self applyMasterOrdering ].!
Item was changed:
----- Method: EToyVocabulary class>>vocabularySummary (in category '*flexibleVocabularies-flexiblevocabularies-scripting') -----
vocabularySummary
"Answer a string describing all the vocabulary defined anywhere in the
system."
"
(StringHolder new contents: EToyVocabulary vocabularySummary)
openLabel: 'EToy Vocabulary' translated
"
+ | etoyVocab |
- | etoyVocab rt interfaces allAdditions |
etoyVocab := Vocabulary eToyVocabulary.
etoyVocab initialize. "just to make sure that it's unfiltered."
^ String streamContents: [:s |
+ self morphClassesDeclaringViewerAdditions do: [:cl | | allAdditions |
- self morphClassesDeclaringViewerAdditions do: [:cl |
s nextPutAll: cl name; cr.
allAdditions := cl allAdditionsToViewerCategories.
cl unfilteredCategoriesForViewer do: [ :cat |
+ allAdditions at: cat ifPresent: [ :additions | | interfaces |
- allAdditions at: cat ifPresent: [ :additions |
interfaces := ((etoyVocab categoryAt: cat) ifNil: [ ElementCategory new ]) elementsInOrder.
interfaces := interfaces
select: [:ea | additions
anySatisfy: [:tuple | (tuple first = #slot
ifTrue: [tuple at: 7]
ifFalse: [tuple at: 2])
= ea selector]].
s tab; nextPutAll: cat translated; cr.
interfaces
+ do: [:if | | rt |
- do: [:if |
s tab: 2.
rt := if resultType.
rt = #unknown
ifTrue: [s nextPutAll: 'command' translated]
ifFalse: [s nextPutAll: 'property' translated;
nextPut: $(;
nextPutAll: (if companionSetterSelector
ifNil: ['RO']
ifNotNil: ['RW']) translated;
space;
nextPutAll: rt translated;
nextPutAll: ') '].
s tab; print: if wording; space.
if argumentVariables
do: [:av | s nextPutAll: av variableName;
nextPut: $(;
nextPutAll: av variableType asString;
nextPut: $)]
separatedBy: [s space].
s tab; nextPutAll: if helpMessage; cr]]]]]!
More information about the Squeak-dev
mailing list
|