[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