-
Notifications
You must be signed in to change notification settings - Fork 0
/
RenameCategoryChange.cls
50 lines (43 loc) · 1.56 KB
/
RenameCategoryChange.cls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"Filed out from Dolphin Smalltalk 7"!
RefactoryCategoryChange subclass: #RenameCategoryChange
instanceVariableNames: 'newName'
classVariableNames: ''
poolDictionaries: ''
classInstanceVariableNames: ''!
RenameCategoryChange guid: (GUID fromString: '{56140d1e-1ec2-4cd9-aa5a-abc85a9200d5}')!
RenameCategoryChange comment: ''!
!RenameCategoryChange categoriesForClass!Refactory-Change Objects! !
!RenameCategoryChange methodsFor!
asUndoOperation
^RenameCategoryChange new
changeClass: self changeClass;
category: newName;
newName: category;
yourself!
asWebsideJson
^super asWebsideJson
at: 'newName' put: newName;
yourself!
fromWebsideJson: json
super fromWebsideJson: json.
newName := json at: 'newName' ifAbsent: []!
newName: aString
newName := aString!
primitiveExecute
| class catalogue source target methods |
class := self changeClass.
catalogue := class methodsCatalogue.
source := catalogue keys detect: [:k | k name = category] ifNone: [^self].
target := catalogue keys detect: [:k | k name = newName] ifNone: [].
methods := catalogue at: source.
target notNil
ifTrue: [methods := (catalogue at: target) copyWith: methods]
ifFalse: [target := newName asMethodCategory].
catalogue
at: target put: methods;
removeKey: source! !
!RenameCategoryChange categoriesFor: #asUndoOperation!public! !
!RenameCategoryChange categoriesFor: #asWebsideJson!public! !
!RenameCategoryChange categoriesFor: #fromWebsideJson:!public! !
!RenameCategoryChange categoriesFor: #newName:!public! !
!RenameCategoryChange categoriesFor: #primitiveExecute!public! !