[etoys-dev] Etoys Inbox: System-Richo.10.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon May 10 20:15:10 EDT 2010
A new version of System was added to project Etoys Inbox:
http://source.squeak.org/etoysinbox/System-Richo.10.mcz
==================== Summary ====================
Name: System-Richo.10
Author: Richo
Time: 10 May 2010, 9:14:25 pm
UUID: 6bae6ba9-1fe6-6d4c-9e1d-0a5be5d2b702
Ancestors: System-bf.9
* A few changes to TextDomainManager and TextDomainInfo to link the text domain of a method with its package instead of its class or class category. Please note that I kinda removed the old behavior, except for the method #domainForClass: which is still needed for String>>#translated but this will change soon.
=============== Diff against System-bf.9 ===============
Item was added:
+ ----- Method: TextDomainInfo>>matchedPackages (in category 'accessing') -----
+ matchedPackages
+ "Returns all the packages with this domain"
+ ^PackageInfo allPackages select: [:package | self includesPackage: package name]!
Item was added:
+ ----- Method: TextDomainManager classSide>>domainForPackage: (in category 'accessing') -----
+ domainForPackage: aPackageInfo
+ ^self domainForPackageNamed: aPackageInfo name!
Item was added:
+ ----- Method: TextDomainManager classSide>>registerPackage:domain: (in category 'accessing') -----
+ registerPackage: aPackageName domain: aDomainName
+ | domInfo |
+ domInfo _ self domainInfoFor: aDomainName.
+ domInfo packages add: aPackageName asSymbol.
+ "self refresh."
+ Packages at: aPackageName put: aDomainName
+ !
Item was changed:
----- Method: TextDomainManager classSide>>refresh (in category 'private') -----
refresh
+ Packages := Dictionary new.
- ClassCategories _ IdentityDictionary new.
- Classes _ IdentityDictionary new.
DomainInfos keysAndValuesDo: [:domainName :domainInfo |
+ domainInfo matchedPackages do: [:package |
+ Packages at: package name ifPresent: [:err| self error: 'Package ', (package name asString) , ' belongs to multiple domains'].
+ Packages at: package name put: domainName.
- domainInfo matchedSystemCategories do: [:cat |
- ClassCategories at: cat ifPresent: [self error: 'category ', (cat asString) , ' belongs to multiple domains'].
- ClassCategories at: cat put: domainName.
- (SystemOrganization listAtCategoryNamed: cat ) do: [ :cls |
- Classes at: cls put: domainName.
]
]
+ !
- ].
- Classes addAll: LoneClasses.!
Item was changed:
Object subclass: #TextDomainManager
instanceVariableNames: ''
+ classVariableNames: 'ClassCategories Classes DefaultDomain DomainInfos LoneClasses Packages'
- classVariableNames: 'ClassCategories Classes DefaultDomain DomainInfos LoneClasses'
poolDictionaries: ''
category: 'System-Localization'!
!TextDomainManager commentStamp: 'tk 1/4/2008 16:08' prior: 0!
I manages mapping from class category to textdomain.
Class variables:
ClassCategories IdentityDictionary -- classCategory -> domainName
Classes IdentityDictionary -- class name (a Symbol) -> domainName (a cache only!!)
DefaultDomain String -- the default domain name
DomainInfos Dictionary -- domainName -> a TextDomainInfo
LoneClasses IdentityDictionary -- class name (a Symbol) -> domainName. For classes whose entire category are not all in the same domain (BookMorph and QuickGuideMorph)
TextDomainManager registerCategoryPrefix: 'DrGeoII' domain: 'DrGeoII'.
TextDomainManager unregisterDomain: 'DrGeoII'.
TextDomainManager registerClass: #QuickGuideMorph domain: 'quickguides'.
TextDomainManager registerClass: #QuickGuideHolderMorph domain: 'quickguides'.
!
Item was changed:
----- Method: TextDomainManager classSide>>initialize (in category 'class initialization') -----
initialize
" TextDomainManager initialize "
ClassCategories _ IdentityDictionary new.
Classes _ IdentityDictionary new.
+ Packages := Dictionary new.
DomainInfos _ Dictionary new.
+ self defaultDomain: 'others'.
+ "self registerClass: #QuickGuideMorph domain: 'quickguides'.
+ self registerClass: #QuickGuideHolderMorph domain: 'quickguides'."!
- self defaultDomain: 'etoys'.
- self registerClass: #QuickGuideMorph domain: 'quickguides'.
- self registerClass: #QuickGuideHolderMorph domain: 'quickguides'.
- !
Item was added:
+ ----- Method: TextDomainInfo>>packages (in category 'accessing') -----
+ packages
+ ^packages!
Item was changed:
Object subclass: #TextDomainInfo
+ instanceVariableNames: 'categoryPrefixes categories packages'
- instanceVariableNames: 'categoryPrefixes categories'
classVariableNames: ''
poolDictionaries: ''
category: 'System-Localization'!
!TextDomainInfo commentStamp: '<historical>' prior: 0!
I hold criteria for deciding wheter a systemCategory belongs to domain.
- categoryPrefixes is collection of prefix of class category.
- categories is for specifying fine grained criterion.
!
Item was added:
+ ----- Method: TextDomainInfo>>includesPackage: (in category 'accessing') -----
+ includesPackage: packageName
+ ^packages includes: packageName!
Item was changed:
----- Method: TextDomainInfo>>initialize (in category 'initialize-release') -----
initialize
categoryPrefixes _ Set new.
categories _ IdentitySet new.
+ packages := Set new. !
- !
Item was changed:
----- Method: TextDomainManager classSide>>allKnownDomains (in category 'accessing') -----
allKnownDomains
| domains |
domains _ Set new.
+ domains addAll: Packages values.
- domains addAll: ClassCategories values.
domains add: self defaultDomain.
^domains
!
Item was added:
+ ----- Method: TextDomainManager classSide>>domainForPackageNamed: (in category 'accessing') -----
+ domainForPackageNamed: packageName
+ ^Packages at: packageName ifAbsent: [self defaultDomain]!
Item was removed:
- ----- Method: TextDomainInfo>>category:matches: (in category 'private') -----
- category: categoryName matches: prefix
- ^ categoryName notNil and: [categoryName = prefix or: [categoryName beginsWith: prefix, '-']]!
Item was removed:
- ----- Method: TextDomainManager classSide>>registerCategoryPrefix:domain: (in category 'accessing') -----
- registerCategoryPrefix: aString domain: aDomainName
- | domInfo |
- domInfo _ self domainInfoFor: aDomainName.
- domInfo categoryPrefixes add: aString.
- self refresh.!
Item was removed:
- ----- Method: TextDomainManager classSide>>registerClass:domain: (in category 'accessing') -----
- registerClass: className domain: aDomainName
-
- LoneClasses ifNil: [LoneClasses _ IdentityDictionary new].
- LoneClasses at: className put: aDomainName.
- self refresh. "moves it to Classes"
- !
Item was removed:
- ----- Method: TextDomainManager classSide>>domainForClassCategory: (in category 'accessing') -----
- domainForClassCategory: aCategorySymbol
- ^ClassCategories at: aCategorySymbol ifAbsent: [self defaultDomain]!
Item was removed:
- ----- Method: TextDomainManager classSide>>registerClassCategory:domain: (in category 'accessing') -----
- registerClassCategory: categorySymbol domain: aDomainName
- | domInfo |
- domInfo _ self domainInfoFor: aDomainName.
- domInfo categories add: categorySymbol.
- self refresh.
- !
Item was removed:
- ----- Method: TextDomainInfo>>includesCategory: (in category 'accessing') -----
- includesCategory: categorySymbol
- (categories includes: categorySymbol) ifTrue: [^true].
- categoryPrefixes do: [:each |
- (self category: categorySymbol matches: each) ifTrue: [^true]
- ].
-
- ^false.!
Item was removed:
- ----- Method: TextDomainInfo>>matchedSystemCategories (in category 'accessing') -----
- matchedSystemCategories
- ^SystemOrganization categories
- select: [:cat | self includesCategory: cat]!
More information about the etoys-dev
mailing list