[Pkg] The Trunk: PackageInfo-Base-cmm.49.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Jan 12 01:14:57 UTC 2011


Chris Muller uploaded a new version of PackageInfo-Base to project The Trunk:
http://source.squeak.org/trunk/PackageInfo-Base-cmm.49.mcz

==================== Summary ====================

Name: PackageInfo-Base-cmm.49
Author: cmm
Time: 11 January 2011, 6:54:27.431 pm
UUID: deb3b211-f90b-41d6-bb1a-be8534595b64
Ancestors: PackageInfo-Base-cmm.48

- Ensure that PackageInfo subclasses are always returned from PackageInfo class>>#named:, even if a generic PackageInfo is already present in PackageInfo allPackages.
- PackageInfo subclass instances should announce their presence by overriding #packageName on the *class* side.  Their 'packageName' variable will be populated in their instance with that name.
- Packages that do not have a custom PackageInfo subclass will still get an instance of the generic PackageInfo, normally.

=============== Diff against PackageInfo-Base-cmm.48 ===============

Item was added:
+ ----- Method: PackageInfo class>>classFor: (in category 'private') -----
+ classFor: packageNameString 
+ 	self
+ 		allSubclassesDo: [:each | each packageName = packageNameString
+ 				ifTrue: [^ each]].
+ 	^ self!

Item was changed:
  ----- Method: PackageInfo class>>named: (in category 'packages access') -----
+ named: aString 
+ 	"Alternative to #named: that provides allows you to register your own
+ 	PackageInfo subclasses."
+ 	| firstTry |
+ 	firstTry := PackageOrganizer default
+ 				packageNamed: aString
+ 				ifAbsent: [nil].
+ 	^ (firstTry isNil
+ 			or: [firstTry class
+ 					~= (self classFor: aString)])
+ 		ifTrue: [(self newNamed: aString) register]
+ 		ifFalse: [firstTry]!
- named: aString
- 	^ PackageOrganizer default packageNamed: aString ifAbsent: [(self new packageName: aString) register]!

Item was added:
+ ----- Method: PackageInfo class>>newNamed: (in category 'private') -----
+ newNamed: aString 
+ 	^ (self classFor: aString) new packageName: aString;
+ 		 register;
+ 		 yourself!

Item was added:
+ ----- Method: PackageInfo class>>packageName (in category 'packages access') -----
+ packageName
+ 	"Subclasses announce their presence for a particular package by
+ 	overriding this method, answering the packageName of the package
+ 	they wish to represent. This is useful for the #classFor: factory
+ 	method. "
+ 	^ nil!

Item was changed:
+ ----- Method: PackageInfo class>>registerPackage: (in category 'registration / unregistration') -----
- ----- Method: PackageInfo class>>registerPackage: (in category 'as yet unclassified') -----
  registerPackage: aString
  	"for compatibility with old fileOuts"
  	^ Smalltalk at: #FilePackageManager ifPresent: [:p | p registerPackage: aString]!

Item was changed:
+ ----- Method: PackageInfo class>>registerPackageName: (in category 'registration / unregistration') -----
- ----- Method: PackageInfo class>>registerPackageName: (in category 'packages access') -----
  registerPackageName: aString
  	^ PackageOrganizer default registerPackageNamed: aString!

Item was changed:
  ----- Method: PackageInfo>>packageName (in category 'naming') -----
  packageName
+ 	^ packageName
+ 		ifNil: [packageName := self class packageName
+ 						ifNil: [self categoryName]]!
- 	^ packageName ifNil: [packageName := self categoryName]!



More information about the Packages mailing list