Skip to content

Commit

Permalink
Add refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
Lin777 committed Feb 5, 2021
1 parent 3ad18b2 commit d87d4a4
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/Refactoring-Changes/RBRenamePackageChange.class.st
Expand Up @@ -34,8 +34,8 @@ RBRenamePackageChange >> primitiveExecute [
{ #category : #printing }
RBRenamePackageChange >> printOn: aStream [
aStream
nextPutAll: self oldName;
nextPutAll: oldName;
nextPutAll: ' renameTo: ';
print: self newName;
print: newName;
nextPut: $!
]
15 changes: 15 additions & 0 deletions src/Refactoring-Core/RBNamespace.class.st
Expand Up @@ -510,6 +510,21 @@ RBNamespace >> renameInstanceVariable: oldName to: newName in: aRBClass around:
around: aBlock
]

{ #category : #changes }
RBNamespace >> renamePackage: aRBPackage to: aSymbol [
| change value dict |
change := changeFactory renamePackage: aRBPackage to: aSymbol.
self flushCaches.
dict := changedPackages.
"self markAsRemoved: aRBClass name.
self unmarkAsRemoved: aSymbol."
value := dict at: aRBPackage name.
dict removeKey: aRBPackage name.
dict at: aSymbol put: value.
value first name: aSymbol.
^ change
]

{ #category : #changes }
RBNamespace >> reparentClasses: aRBClassCollection to: newClass [
aRBClassCollection do:
Expand Down
38 changes: 38 additions & 0 deletions src/Refactoring-Core/RBPackageRefactoring.class.st
@@ -0,0 +1,38 @@
"
I am an abstract base class for package refactorings.
All that I provide is the package name, my subclass refactorings are operating on, and a instance creation method for setting the package name and an initial namespace model.
"
Class {
#name : #RBPackageRefactoring,
#superclass : #RBRefactoring,
#instVars : [
'packageName'
],
#category : #'Refactoring-Core-Refactorings'
}

{ #category : #'as yet unclassified' }
RBPackageRefactoring class >> model: aRBModel packageName: aName [
^ self new
model: aRBModel;
packageName: aName;
yourself
]

{ #category : #accessing }
RBPackageRefactoring class >> packageName: aName [
^self new packageName: aName
]

{ #category : #accessing }
RBPackageRefactoring >> packageName [

^ packageName
]

{ #category : #accessing }
RBPackageRefactoring >> packageName: anObject [

packageName := anObject
]
57 changes: 57 additions & 0 deletions src/Refactoring-Core/RBRenamePackageRefactoring.class.st
@@ -0,0 +1,57 @@
Class {
#name : #RBRenamePackageRefactoring,
#superclass : #RBPackageRefactoring,
#instVars : [
'package',
'newName'
],
#category : #'Refactoring-Core-Refactorings'
}

{ #category : #'instance creation' }
RBRenamePackageRefactoring class >> model: aRBSmalltalk rename: aPkg to: aNewName [
^(self new)
model: aRBSmalltalk;
packageName: aPkg name newName: aNewName;
yourself
]

{ #category : #'instance creation' }
RBRenamePackageRefactoring class >> rename: aClass to: aNewName [
^self new packageName: aClass name newName: aNewName
]

{ #category : #initialization }
RBRenamePackageRefactoring >> packageName: aName newName: aNewName [
packageName := aName asSymbol.
package := self model packageNamed: packageName.
newName := aNewName asSymbol
]

{ #category : #preconditions }
RBRenamePackageRefactoring >> preconditions [
^ self emptyCondition
]

{ #category : #transforming }
RBRenamePackageRefactoring >> renameManifestClass [
|refactoring manifest|
manifest := package packageManifestOrNil.
refactoring := RBRenameClassRefactoring
rename: manifest
to: (TheManifestBuilder manifestClassNameFor: newName).
self performCompositeRefactoring: refactoring
]

{ #category : #transforming }
RBRenamePackageRefactoring >> renamePackage [

self model renamePackage: package to: newName
]

{ #category : #transforming }
RBRenamePackageRefactoring >> transform [

self renamePackage.
self renameManifestClass.
]

0 comments on commit d87d4a4

Please sign in to comment.