[Pkg] The Trunk: Monticello-cmm.468.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Jun 8 21:23:00 UTC 2011


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

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

Name: Monticello-cmm.468
Author: cmm
Time: 6 June 2011, 6:39:41.572 pm
UUID: 08000000-1508-760d-1508-760d14000000
Ancestors: Monticello-cmm.467

When renaming a package, register the new package name _before_ performing the rename operations because, otherwise, the renames could cause a generically-named package to be registered too.

=============== Diff against Monticello-ul.466 ===============

Item was added:
+ ----- Method: MCClassDefinition>>rename:toBe: (in category 'renaming') -----
+ rename: oldPackageName toBe: newPackageName 
+ 	self actualClass category:
+ 		(self
+ 			newCategoryNameFor: self actualClass category
+ 			givenRenameFrom: oldPackageName
+ 			to: newPackageName)!

Item was added:
+ ----- Method: MCDefinition>>newCategoryNameFor:givenRenameFrom:to: (in category 'renaming') -----
+ newCategoryNameFor: categoryName givenRenameFrom: oldPackageName to: newPackageName 
+ 	^ oldPackageName size < categoryName size
+ 		ifTrue:
+ 			[ newPackageName ,
+ 				(categoryName
+ 					copyFrom: oldPackageName size + 1
+ 					to: categoryName size) ]
+ 		ifFalse: [ newPackageName ]!

Item was added:
+ ----- Method: MCDefinition>>rename:toBe: (in category 'renaming') -----
+ rename: oldPackageName toBe: newPackageName
+ 	"Overridden as necessary in subclasses."!

Item was added:
+ ----- Method: MCMethodDefinition>>rename:toBe: (in category 'renaming') -----
+ rename: oldPackageName toBe: newPackageName 
+ 	"If I'm an extension or override method, rename the category to be prefixed with newPackageName."
+ 	(self isExtensionMethod or: [ self isOverrideMethod ]) ifTrue:
+ 		[ self actualClass organization
+ 			renameCategory: self category
+ 			toBe:
+ 				'*' ,
+ 					(self
+ 						newCategoryNameFor: self category allButFirst
+ 						givenRenameFrom: oldPackageName
+ 						to: newPackageName) asLowercase ]!

Item was changed:
+ ----- Method: MCOrganizationDefinition>>= (in category 'testing') -----
- ----- Method: MCOrganizationDefinition>>= (in category 'as yet unclassified') -----
  = aDefinition
  	^ (super = aDefinition)
  		and: [categories = aDefinition categories]!

Item was changed:
+ ----- Method: MCOrganizationDefinition>>accept: (in category 'actions') -----
- ----- Method: MCOrganizationDefinition>>accept: (in category 'as yet unclassified') -----
  accept: aVisitor
  	^ aVisitor visitOrganizationDefinition: self!

Item was changed:
+ ----- Method: MCOrganizationDefinition>>categories (in category 'accessing') -----
- ----- Method: MCOrganizationDefinition>>categories (in category 'as yet unclassified') -----
  categories
  	^ categories!

Item was changed:
+ ----- Method: MCOrganizationDefinition>>categories: (in category 'accessing') -----
- ----- Method: MCOrganizationDefinition>>categories: (in category 'as yet unclassified') -----
  categories: anArray
  	categories := anArray!

Item was changed:
+ ----- Method: MCOrganizationDefinition>>commonPrefix (in category 'accessing') -----
- ----- Method: MCOrganizationDefinition>>commonPrefix (in category 'as yet unclassified') -----
  commonPrefix
  	| stream |
  	categories isEmpty ifTrue: [^ ''].
  	
  	stream := String new writeStream.
  	categories first withIndexDo:
  		[:c :i|
  		categories do:
  			[:ea |
  			(ea at: i ifAbsent: []) = c ifFalse: [^ stream contents]].
  		stream nextPut: c].
  	^ stream contents!

Item was changed:
+ ----- Method: MCOrganizationDefinition>>description (in category 'accessing') -----
- ----- Method: MCOrganizationDefinition>>description (in category 'as yet unclassified') -----
  description
  	^ Array with: #organization with: self commonPrefix!

Item was changed:
+ ----- Method: MCOrganizationDefinition>>isOrganizationDefinition (in category 'testing') -----
- ----- Method: MCOrganizationDefinition>>isOrganizationDefinition (in category 'as yet unclassified') -----
  isOrganizationDefinition
  	^ true!

Item was changed:
+ ----- Method: MCOrganizationDefinition>>postloadOver: (in category 'actions') -----
- ----- Method: MCOrganizationDefinition>>postloadOver: (in category 'as yet unclassified') -----
  postloadOver: oldDefinition
  	SystemOrganization categories:
  		(self
  			reorderCategories: SystemOrganization categories
  			original: (oldDefinition ifNil: [#()] ifNotNil: [oldDefinition categories]))!

Item was added:
+ ----- Method: MCOrganizationDefinition>>rename:toBe: (in category 'actions') -----
+ rename: oldPackageName toBe: newPackageName 
+ 	categories do:
+ 		[ : each | SystemOrganizer default
+ 			renameCategory: each
+ 			toBe:
+ 				(self
+ 					newCategoryNameFor: each
+ 					givenRenameFrom: oldPackageName
+ 					to: newPackageName) ]!

Item was changed:
+ ----- Method: MCOrganizationDefinition>>reorderCategories:original: (in category 'actions') -----
- ----- Method: MCOrganizationDefinition>>reorderCategories:original: (in category 'as yet unclassified') -----
  reorderCategories: allCategories original: oldCategories
  	| first |
  	first := allCategories detect: [:ea | categories includes: ea] ifNone: [^ allCategories].
  	^ 	((allCategories copyUpTo: first) copyWithoutAll: oldCategories, categories),
  		categories,
  		((allCategories copyAfter: first) copyWithoutAll: oldCategories, categories)
  !

Item was changed:
+ ----- Method: MCOrganizationDefinition>>sortKey (in category 'accessing') -----
- ----- Method: MCOrganizationDefinition>>sortKey (in category 'as yet unclassified') -----
  sortKey
  	^ '<organization>'!

Item was changed:
+ ----- Method: MCOrganizationDefinition>>source (in category 'accessing') -----
- ----- Method: MCOrganizationDefinition>>source (in category 'as yet unclassified') -----
  source
  	^ String streamContents:
  		[:s |
  		categories do: [:ea | s nextPutAll: ea] separatedBy: [s cr]]!

Item was changed:
+ ----- Method: MCOrganizationDefinition>>summary (in category 'accessing') -----
- ----- Method: MCOrganizationDefinition>>summary (in category 'as yet unclassified') -----
  summary
  	^ categories asArray printString!

Item was added:
+ ----- Method: MCWorkingCopy>>renameToBe: (in category 'operations') -----
+ renameToBe: newPackageName 
+ 	| newWorkingCopy |
+ 	self modified ifTrue: [ self error: 'Should only rename an unmodified package.' ].
+ 	(MCWorkingCopy allManagers anySatisfy:
+ 		[ : each | each packageName = newPackageName ]) ifTrue: [ self error: newPackageName , ' is already taken.' ].
+ 	PackageInfo registerPackageName: newPackageName.
+ 	newWorkingCopy := MCWorkingCopy forPackage: (MCPackage new name: newPackageName).
+ 	self package snapshot definitions do:
+ 		[ : each | each
+ 			rename: self package name
+ 			toBe: newPackageName ].
+ 	self ancestors do:
+ 		[ : each | newWorkingCopy ancestry addAncestor: each ].
+ 	^ newWorkingCopy!

Item was added:
+ ----- Method: MCWorkingCopyBrowser>>renamePackage (in category 'actions') -----
+ renamePackage
+ 	| newName |
+ 	workingCopy ifNil:
+ 		[ UIManager inform: 'Please select a package to be renamed.'.
+ 		^ self ].
+ 	workingCopy modified ifTrue:
+ 		[ UIManager inform: 'Only unmodified packages should be renamed.'.
+ 		^ self ].
+ 	newName := FillInTheBlankMorph
+ 		request: 'New name of package:'
+ 		initialAnswer: workingCopy packageName.
+ 	newName isEmptyOrNil ifFalse:
+ 		[ | newWorkingCopy |
+ 		newWorkingCopy := workingCopy renameToBe: newName.
+ 		workingCopy package snapshot definitions
+ 			ifEmpty:
+ 				[ "It worked."
+ 				workingCopy unregister.
+ 				workingCopy := newWorkingCopy.
+ 				self repositorySelection: 0.
+ 				self
+ 					 workingCopyListChanged ;
+ 					 changed: #workingCopySelection ;
+ 					 changed: #repositoryList.
+ 				self changedButtons ]
+ 			ifNotEmpty: 
+ 				[ "It didn't work, browse the remaining definitions."
+ 				self browseWorkingCopy ] ]!

Item was changed:
  ----- Method: MCWorkingCopyBrowser>>workingCopyListMenu: (in category 'morphic ui') -----
  workingCopyListMenu: aMenu
  	workingCopy ifNil: [^ aMenu].
  	self fillMenu: aMenu fromSpecs:
  		#(('add required package' #addRequiredPackage)
  			('clear required packages' #clearRequiredPackages)
  			('browse package' #browseWorkingCopy)
  			('view changes' #viewChanges)
  			('view history' #viewHistory)
  			('recompile package' #recompilePackage)
  			('revert package...' #revertPackage)
  			('unload package' #unloadPackage)
+ 			('delete working copy' #deleteWorkingCopy)
+ 			('rename package...' #renamePackage)).
- 			('delete working copy' #deleteWorkingCopy)).
  	(Smalltalk includesKey: #SARMCPackageDumper) ifTrue: [
  		aMenu add: 'make SAR' target: self selector: #fileOutAsSAR
  	].
  	self insertExternalMenuEntries: aMenu.
  	^aMenu!



More information about the Packages mailing list