--- a/CustomAccessMethodsCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomAccessMethodsCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -93,7 +93,7 @@
source := self sourceForClass: class variableName: variableName.
- method := builder createMethod.
+ method := codeBuilder createMethod.
method
class: (self methodClass: class);
protocol: self protocol;
--- a/CustomAccessMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomAccessMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,17 +1,17 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomAccessMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomAccessMethodsCodeGeneratorTests
instanceVariableNames:'expectedSource class'
classVariableNames:''
poolDictionaries:''
category:'Interface-Refactoring-Custom-Tests'
!
+
!CustomAccessMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
-
- ^ mock mockOf: CustomAccessMethodsCodeGenerator
+generatorOrRefactoring
+ ^ mock mockOf:CustomAccessMethodsCodeGenerator
"Modified: / 01-07-2014 / 16:19:16 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
@@ -21,7 +21,7 @@
test_arg_name_for_method_name_boolean
| actualArgName |
- actualArgName := generator argNameForMethodName: 'isSomething'.
+ actualArgName := generatorOrRefactoring argNameForMethodName: 'isSomething'.
self assert: 'aBoolean' = actualArgName
@@ -31,7 +31,7 @@
test_arg_name_for_method_name_other
| actualArgName |
- actualArgName := generator argNameForMethodName: 'selector'.
+ actualArgName := generatorOrRefactoring argNameForMethodName: 'selector'.
self assert: 'something' = actualArgName
@@ -46,7 +46,7 @@
context selectedClasses: (Array with: class).
- generator mockSelector: #sourceForClass:variableName: withBlockValue: [
+ generatorOrRefactoring mockSelector: #sourceForClass:variableName: withBlockValue: [
:aClass :varName |
^ varName, ' ^ ', varName.
@@ -54,7 +54,7 @@
methodCount := class methodDictionary size.
- generator executeInContext: context.
+ generatorOrRefactoring executeInContext: context.
self assert: (methodCount + 3) = class methodDictionary size.
@@ -82,7 +82,7 @@
context selectedClasses: (Array with: class).
context selectedVariables: (Array with: 'instanceVariable_02').
- generator mockSelector: #sourceForClass:variableName: withBlockValue: [
+ generatorOrRefactoring mockSelector: #sourceForClass:variableName: withBlockValue: [
:aClass :varName |
^ varName, ' ^ ', varName.
@@ -90,7 +90,7 @@
methodCount := class methodDictionary size.
- generator executeInContext: context.
+ generatorOrRefactoring executeInContext: context.
self assert: (methodCount + 1) = class methodDictionary size.
@@ -111,7 +111,7 @@
context selectedClasses: (Array with: class).
context selectedVariables: (Array with: 'instanceVariable_02' with: 'instanceVariable_01').
- generator mockSelector: #sourceForClass:variableName: withBlockValue: [
+ generatorOrRefactoring mockSelector: #sourceForClass:variableName: withBlockValue: [
:aClass :varName |
^ varName, ' ^ ', varName.
@@ -119,7 +119,7 @@
methodCount := class methodDictionary size.
- generator executeInContext: context.
+ generatorOrRefactoring executeInContext: context.
self assert: (methodCount + 2) = class methodDictionary size.
@@ -137,7 +137,7 @@
test_default_method_name_for_variable_name
| actualDefaultMethodName |
- actualDefaultMethodName := generator defaultMethodNameFor: 'varName'.
+ actualDefaultMethodName := generatorOrRefactoring defaultMethodNameFor: 'varName'.
self assert: 'defaultVarName' = actualDefaultMethodName
@@ -147,7 +147,7 @@
test_method_name_for_all_upper_case
| actualMethodName |
- actualMethodName := generator methodNameFor: 'VAR'.
+ actualMethodName := generatorOrRefactoring methodNameFor: 'VAR'.
self assert: 'VAR' = actualMethodName
@@ -157,7 +157,7 @@
test_method_name_for_class_variable
| actualMethodName |
- actualMethodName := generator methodNameFor: 'ClassVar'.
+ actualMethodName := generatorOrRefactoring methodNameFor: 'ClassVar'.
self assert: 'classVar' = actualMethodName
@@ -166,7 +166,7 @@
test_method_name_for_instance_variable
- self assert: 'instVar' = (generator methodNameFor: 'instVar')
+ self assert: 'instVar' = (generatorOrRefactoring methodNameFor: 'instVar')
"Created: / 20-06-2014 / 20:35:22 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
@@ -174,7 +174,7 @@
test_method_name_for_number
| actualMethodName |
- actualMethodName := generator methodNameFor: 'Var_7'.
+ actualMethodName := generatorOrRefactoring methodNameFor: 'Var_7'.
self assert: 'var_7' = actualMethodName
@@ -191,7 +191,7 @@
self assert: class isMeta.
- actualVarType := generator varTypeOf: 'ClassInstVar2' class: class.
+ actualVarType := generatorOrRefactoring varTypeOf: 'ClassInstVar2' class: class.
self assert: 'classInstVar' = actualVarType
@@ -204,7 +204,7 @@
class := self createClass.
class instanceVariableNames: 'instVar1 instVar2'.
- actualVarType := generator varTypeOf: 'instVar2' class: class.
+ actualVarType := generatorOrRefactoring varTypeOf: 'instVar2' class: class.
self assert: 'instance' = actualVarType
@@ -217,10 +217,17 @@
class := self createClass.
class classVariableNames: 'ClassVar1 ClassVar2'.
- actualVarType := generator varTypeOf: 'ClassVar2' class: class.
+ actualVarType := generatorOrRefactoring varTypeOf: 'ClassVar2' class: class.
self assert: 'static' = actualVarType
"Created: / 20-06-2014 / 21:22:15 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
+!CustomAccessMethodsCodeGeneratorTests class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- a/CustomBrowserContext.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomBrowserContext.st Sun Aug 24 01:49:18 2014 +0100
@@ -48,11 +48,29 @@
"Modified: / 26-01-2014 / 23:39:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-selectedCode
+selectedCodes
+ | codeSelection currentMethod codeView |
+
+ currentMethod := state theSingleSelectedMethod.
+ codeView := state codeView.
+
+ (codeView isNil or: [ currentMethod isNil ]) ifTrue: [
+ ^ nil
+ ].
- ^ state codeView textView selectionAsString
+ codeSelection := CustomSourceCodeSelection new.
+ codeSelection
+ selectedInterval: codeView selectedInterval;
+ currentSourceCode: codeView contentsAsString;
+ selectedMethod: currentMethod;
+ selectedClass: currentMethod mclass;
+ selectedSelector: currentMethod selector.
+
- "Created: / 05-08-2014 / 21:27:00 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ ^ Array with: codeSelection
+
+ "Created: / 18-08-2014 / 21:34:56 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 18-08-2014 / 23:51:57 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
selectedMethodProtocols
--- a/CustomChangeNotificationAccessMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomChangeNotificationAccessMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomChangeNotificationAccessMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomChangeNotificationAccessMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -10,7 +10,7 @@
!CustomChangeNotificationAccessMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomChangeNotificationAccessMethodsCodeGenerator new
! !
--- a/CustomChangeNotificationSetterMethodsCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomChangeNotificationSetterMethodsCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -58,7 +58,7 @@
comment := comment bindWith: varType with: aName.
].
- methodBuilder := builder methodBuilder.
+ methodBuilder := codeBuilder methodBuilder.
methodBuilder
source: '`@methodName
`"comment
--- a/CustomChangeNotificationSetterMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomChangeNotificationSetterMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomChangeNotificationSetterMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomChangeNotificationSetterMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomChangeNotificationSetterMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomChangeNotificationSetterMethodsCodeGenerator new
! !
--- a/CustomCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -10,17 +10,12 @@
!CustomCodeGenerator class methodsFor:'instance creation'!
-new
- "return an initialized instance"
-
- ^ self basicNew initialize.
-!
-
subGeneratorOf: aCodeGenerator
| codeGenerator nestingCount |
codeGenerator := self new.
- codeGenerator builder: aCodeGenerator builder.
+ codeGenerator codeBuilder: aCodeGenerator codeBuilder.
+ codeGenerator refactoryBuilder: aCodeGenerator refactoryBuilder.
codeGenerator userPreferences: aCodeGenerator userPreferences.
codeGenerator dialog: aCodeGenerator dialog.
codeGenerator changeManager: aCodeGenerator changeManager.
@@ -33,7 +28,7 @@
^ codeGenerator
"Created: / 19-04-2014 / 10:15:21 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 08-07-2014 / 16:57:32 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 00:10:17 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!CustomCodeGenerator class methodsFor:'testing'!
@@ -44,57 +39,6 @@
"Created: / 26-01-2014 / 21:38:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
-!CustomCodeGenerator methodsFor:'accessing'!
-
-builder
-
- ^ builder
-
- "Created: / 19-04-2014 / 10:16:28 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-builder: aBuilder
-
- builder := aBuilder
-
- "Created: / 19-04-2014 / 09:17:03 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-! !
-
-!CustomCodeGenerator methodsFor:'code generation'!
-
-addBuilderChanges
- | change |
-
- change := builder change.
- change notNil ifTrue: [
- self addChange: change
- ]
-
- "Created: / 10-04-2014 / 23:26:12 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 13-05-2014 / 22:10:40 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-createClass: definitionString
- "Create a new class defined by `definitionString`.
- `definitionString` is something like:
-
- CustomCodeGeneratorOrRefactoring subclass:#CustomCodeGenerator
- instanceVariableNames:'sourcesInBuildProcess'
- classVariableNames:''
- poolDictionaries:''
- category:'Interface-Refactoring-Custom'
-
- "
-
-
- | classChange |
-
- classChange := InteractiveAddClassChange definition: definitionString.
- self addChange: classChange.
-
- "Created: / 03-04-2014 / 10:27:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
!CustomCodeGenerator methodsFor:'executing'!
buildInContext: aCustomContext
@@ -104,18 +48,6 @@
"Created: / 18-03-2014 / 22:52:09 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
-executeInContext: aCustomContext
-
- self startCollectChanges.
- self buildInContext: aCustomContext.
- self addBuilderChanges.
- self executeChangesInContext: aCustomContext changesName: self class description.
-
- "Created: / 19-03-2014 / 18:45:26 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 03-04-2014 / 11:04:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 07-08-2014 / 23:22:11 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
executeSubGeneratorClasses: aSubGeneratorClasses inContext: aCustomContext
aSubGeneratorClasses do: [ :aSubGeneratorClass |
@@ -128,52 +60,6 @@
"Created: / 08-07-2014 / 18:31:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
-!CustomCodeGenerator methodsFor:'initialization'!
-
-initialize
-
- super initialize.
- self setUpBuilder.
- self setUpDialog.
- self setUpChangeManager
-
- "Created: / 17-03-2014 / 22:27:32 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 09-06-2014 / 22:58:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-setUpBuilder
-
- builder := CustomSourceCodeBuilder new.
-
- "Created: / 09-06-2014 / 22:56:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-setUpChangeManager
-
- changeManager := CustomBrowserChangeManager new.
-
- "Created: / 09-06-2014 / 22:56:56 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-setUpDialog
-
- dialog := CustomUserDialog new.
-
- "Created: / 09-06-2014 / 22:57:08 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-! !
-
-!CustomCodeGenerator methodsFor:'private'!
-
-addSource: source
-
- source sourceExists ifFalse: [
- self addChange: (source change).
- ]
-
- "Created: / 01-04-2014 / 21:53:54 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 10-04-2014 / 23:07:53 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-! !
-
!CustomCodeGenerator class methodsFor:'documentation'!
version_HG
--- a/CustomCodeGeneratorClassGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomCodeGeneratorClassGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -69,7 +69,7 @@
| subContext generator class |
- class := builder createClass.
+ class := codeBuilder createClass.
class
superclassName: 'CustomCodeGenerator';
className: aClassName;
--- a/CustomCodeGeneratorClassGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomCodeGeneratorClassGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -20,7 +20,7 @@
self assert: (Smalltalk classNamed: testClassName) isNil.
codeGenerator buildForClassName: testClassName.
- codeGenerator builder compile.
+ codeGenerator codeBuilder compile.
self assert: (Smalltalk classNamed: testClassName) isNil not.
self assert: ((Smalltalk classNamed: testClassName) includesSelector: #buildInContext:).
@@ -31,7 +31,7 @@
(Smalltalk classNamed: testClassName) removeFromSystem.
"Created: / 31-03-2014 / 23:20:33 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 26-04-2014 / 00:24:55 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 00:09:01 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
test_code_generator_class_created_with_mock_dialog
--- a/CustomCodeGeneratorOrRefactoring.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomCodeGeneratorOrRefactoring.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,13 +1,21 @@
"{ Package: 'jn:refactoring_custom' }"
CustomCodeGeneratorOrRefactoringBase subclass:#CustomCodeGeneratorOrRefactoring
- instanceVariableNames:'dialog changeManager'
+ instanceVariableNames:'dialog changeManager codeBuilder refactoryBuilder'
classVariableNames:''
poolDictionaries:''
category:'Interface-Refactoring-Custom'
!
+!CustomCodeGeneratorOrRefactoring class methodsFor:'instance creation'!
+
+new
+ "return an initialized instance"
+
+ ^ self basicNew initialize.
+! !
+
!CustomCodeGeneratorOrRefactoring class methodsFor:'accessing-presentation'!
description
@@ -105,6 +113,20 @@
"Created: / 31-05-2014 / 13:30:02 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
+codeBuilder
+
+ ^ codeBuilder
+
+ "Created: / 23-08-2014 / 00:13:43 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+codeBuilder: aBuilder
+
+ codeBuilder := aBuilder
+
+ "Created: / 23-08-2014 / 00:13:26 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
compositeChangeCollector
^ compositeChangeCollector
@@ -147,6 +169,20 @@
"Created: / 11-05-2014 / 00:27:49 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
+refactoryBuilder
+
+ ^ refactoryBuilder
+
+ "Modified (format): / 23-08-2014 / 00:14:38 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+refactoryBuilder: aRefactoryBuilder
+
+ refactoryBuilder := aRefactoryBuilder.
+
+ "Modified (format): / 23-08-2014 / 00:14:33 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
userPreferences
^ userPreferences
@@ -185,6 +221,26 @@
"Created: / 31-05-2014 / 11:30:11 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
+!CustomCodeGeneratorOrRefactoring methodsFor:'code generation'!
+
+addBuilderChanges
+
+ self addChange: codeBuilder change.
+ self addChange: refactoryBuilder change
+
+ "Created: / 10-04-2014 / 23:26:12 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 15:41:16 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+addChange: aCodeChange
+
+ aCodeChange notNil ifTrue: [
+ super addChange: aCodeChange
+ ]
+
+ "Created: / 23-08-2014 / 15:40:17 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
!CustomCodeGeneratorOrRefactoring methodsFor:'executing'!
executeChangesInContext: aCustomContext changesName: aName
@@ -195,15 +251,15 @@
!
executeInContext: aCustomContext
- "Generates the code or perform the refactoring. This method
- is guaranteed to be called only if #availableInContext: returns
- true.
- Called by the UI when user want to perform the task"
+ self startCollectChanges.
+ self buildInContext: aCustomContext.
+ self addBuilderChanges.
+ self executeChangesInContext: aCustomContext changesName: self class description.
- self subclassResponsibility
-
- "Created: / 01-12-2013 / 00:15:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 19-03-2014 / 18:45:26 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 03-04-2014 / 11:04:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 07-08-2014 / 23:22:11 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
executeInContextWithWaitCursor: aCustomContext
@@ -225,6 +281,49 @@
"Created: / 07-08-2014 / 23:17:17 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
+!CustomCodeGeneratorOrRefactoring methodsFor:'initialization'!
+
+initialize
+
+ super initialize.
+ self setUpCodeBuilder.
+ self setUpRefactoryBuilder.
+ self setUpDialog.
+ self setUpChangeManager
+
+ "Created: / 17-03-2014 / 22:27:32 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 00:06:41 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+setUpChangeManager
+
+ changeManager := CustomBrowserChangeManager new.
+
+ "Created: / 09-06-2014 / 22:56:56 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+setUpCodeBuilder
+
+ codeBuilder := CustomSourceCodeBuilder new.
+
+ "Created: / 09-06-2014 / 22:56:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified (format): / 23-08-2014 / 00:06:15 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+setUpDialog
+
+ dialog := CustomUserDialog new.
+
+ "Created: / 09-06-2014 / 22:57:08 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+setUpRefactoryBuilder
+
+ refactoryBuilder := CustomRefactoryBuilder new.
+
+ "Created: / 23-08-2014 / 00:05:52 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
!CustomCodeGeneratorOrRefactoring class methodsFor:'documentation'!
version_HG
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/CustomCodeGeneratorOrRefactoringTestCase.st Sun Aug 24 01:49:18 2014 +0100
@@ -0,0 +1,300 @@
+"{ Package: 'jn:refactoring_custom' }"
+
+TestCase subclass:#CustomCodeGeneratorOrRefactoringTestCase
+ instanceVariableNames:'context codeBuilder refactoryBuilder generatorOrRefactoring
+ classes changeManager userPreferences mock testFormatterSettings
+ originalFormatterSettings'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Refactoring-Custom-Tests'
+!
+
+!CustomCodeGeneratorOrRefactoringTestCase methodsFor:'accessing'!
+
+formatterSettings
+ "see setUpFormatterSettings"
+
+ ^ testFormatterSettings
+
+ "Created: / 21-08-2014 / 12:21:00 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+generatorOrRefactoring
+ "Should return an instance of CustomCodeGenerator or CustomRefactoring subclass"
+
+ ^ self subclassResponsibility
+
+ "Created: / 27-05-2014 / 19:16:44 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified (comment): / 23-08-2014 / 11:38:04 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomCodeGeneratorOrRefactoringTestCase methodsFor:'asserting'!
+
+assertClassExists: aClassName
+
+ self assert: (Smalltalk classNamed: aClassName asString) isNil not
+
+ "Created: / 15-06-2014 / 16:42:19 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+assertClassMethodSource: aSourceCode atSelector: aSelector
+ "Assert that source code is same at given selector for first generated class"
+
+ | className class |
+
+ className := classes first classNameBuilded.
+ class := Smalltalk classNamed: className.
+
+ ^ self assertClassMethodSource: aSourceCode atSelector: aSelector forClass: class
+
+ "Created: / 11-07-2014 / 20:11:01 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+assertClassMethodSource: expectedSource atSelector: aSelector forClass: aClass
+ "Assert that source code is same at given selector for given class"
+
+ | actualSource |
+
+ actualSource := aClass theMetaclass sourceCodeAt: aSelector asSymbol.
+
+ ^ self assertSource: expectedSource sameAs: actualSource
+
+ "Created: / 11-07-2014 / 20:09:59 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+assertClassNotExists: aClassName
+
+ self assert: (Smalltalk classNamed: aClassName asString) isNil
+
+ "Created: / 15-06-2014 / 16:42:37 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+assertMethodSource: aSourceCode atSelector: aSelector
+ "Assert that source code is same at given selector for first generated class"
+
+ | className class |
+
+ className := classes first classNameBuilded.
+ class := Smalltalk classNamed: className.
+
+ ^ self assertMethodSource: aSourceCode atSelector: aSelector forClass: class
+
+ "Created: / 27-05-2014 / 20:06:17 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 30-05-2014 / 22:36:09 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+assertMethodSource: expectedSource atSelector: aSelector forClass: aClass
+ "Assert that source code is same at given selector for given class"
+
+ | actualSource |
+
+ actualSource := aClass sourceCodeAt: aSelector asSymbol.
+
+ ^ self assertSource: expectedSource sameAs: actualSource
+
+ "Created: / 27-05-2014 / 20:08:32 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+assertSource: expectedSource sameAs: actualSource
+
+ self assert: (Change isSource: expectedSource sameSourceAs: actualSource)
+
+ "Created: / 25-05-2014 / 22:18:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 10-07-2014 / 11:31:19 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomCodeGeneratorOrRefactoringTestCase methodsFor:'code generation helpers'!
+
+createClass
+ "Returns new class change with some name"
+
+ | class |
+
+ class := codeBuilder createClass.
+ class className: 'DummyClassForGeneratorTestCase'.
+ classes add: class.
+
+ ^ class
+
+ "Created: / 29-05-2014 / 23:22:52 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomCodeGeneratorOrRefactoringTestCase methodsFor:'context templates'!
+
+classWithInstanceVariable
+ | class |
+
+ class := self createClass.
+ class instanceVariableNames: 'instanceVariable'.
+
+ context selectedClasses: (Array with: class)
+
+ "Created: / 29-05-2014 / 00:33:40 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 29-05-2014 / 23:44:20 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+classWithThreeInstanceVariables
+ | class |
+
+ class := self createClass.
+ class instanceVariableNames: 'instanceVariable_01 instanceVariable_02 instanceVariable_03'.
+
+ context selectedClasses: (Array with: class).
+ context selectedVariables: (class instanceVariableNames).
+
+ "Created: / 13-07-2014 / 21:56:12 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+classWithTwoInstanceVariables
+ | class |
+
+ class := self createClass.
+ class instanceVariableNames: 'instanceVariable_01 instanceVariable_02'.
+
+ context selectedClasses: (Array with: class).
+ context selectedVariables: (class instanceVariableNames).
+
+ "Created: / 13-07-2014 / 21:45:06 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomCodeGeneratorOrRefactoringTestCase methodsFor:'executing'!
+
+createContext: contextTemplateName
+ "Creates context by given template name
+ (produces more readable code than just method call)"
+
+ self perform: contextTemplateName asSymbol
+
+ "Created: / 27-07-2014 / 12:27:08 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+executeGeneratorInContext: contextTemplateName
+ "Executes generator in context created by given name"
+
+ self perform: contextTemplateName asSymbol.
+ generatorOrRefactoring executeInContext: context
+
+ "Created: / 27-05-2014 / 20:03:14 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 29-05-2014 / 23:38:08 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomCodeGeneratorOrRefactoringTestCase methodsFor:'initialization & release'!
+
+defaultUserPreferences
+
+ userPreferences
+ generateComments: true;
+ generateCommentsForAspectMethods: true;
+ generateCommentsForGetters: true;
+ generateCommentsForSetters: true
+
+ "Created: / 09-06-2014 / 22:36:59 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+initalizeTestFormatterSettings
+ "see setUpFormatterSettings"
+
+ testFormatterSettings := IdentityDictionary new.
+ testFormatterSettings
+ at: #tabIndent put: 4;
+ at: #spaceAroundTemporaries put: false;
+ at: #emptyLineAfterTemporaries put: true;
+ at: #emptyLineAfterMethodComment put: true;
+ at: #spaceAfterReturnToken put: true;
+ at: #spaceAfterKeywordSelector put: false;
+ at: #spaceAfterBlockStart put: true;
+ at: #spaceBeforeBlockEnd put: true;
+ at: #cStyleBlocks put: true;
+ at: #blockArgumentsOnNewLine put: false;
+ at: #maxLengthForSingleLineBlocks put: 4;
+ at: #periodAfterLastStatementPolicy put: #keep.
+ "
+ EmptyLineBeforeFinalMethodComment := true.
+ SpaceAroundLiteralArrayElements := true.
+ STXStyleMethodComments := true.
+ "
+
+ "Created: / 21-08-2014 / 11:38:07 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+restoreFormatterSettings
+ "see setUpFormatterSettings"
+
+ originalFormatterSettings keysAndValuesDo: [ :key :value |
+ RBFormatter perform: key asMutator with: value.
+ ].
+
+ "Created: / 20-08-2014 / 22:25:02 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+setUp
+
+ classes := OrderedCollection new.
+ mock := CustomMock new.
+
+ context := CustomSubContext new.
+
+ changeManager := CustomLocalChangeManager new.
+ self setUpBuilders.
+
+ userPreferences := UserPreferences new.
+ self defaultUserPreferences.
+ generatorOrRefactoring := self generatorOrRefactoring.
+
+ generatorOrRefactoring isNil ifFalse: [
+ self setUpGeneratorOrRefactoring: generatorOrRefactoring
+ ].
+
+ self initalizeTestFormatterSettings.
+ self setUpFormatterSettings
+
+ "Created: / 27-05-2014 / 19:16:44 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 16:00:14 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+setUpBuilders
+
+ codeBuilder := CustomSourceCodeBuilder new.
+ codeBuilder changeManager: changeManager.
+
+ refactoryBuilder := CustomRefactoryBuilder new.
+ refactoryBuilder changeManager: changeManager.
+
+ "Created: / 23-08-2014 / 15:57:43 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+setUpFormatterSettings
+ "Settings for RBFormatter to keep formatting settings independent on system settings.
+ Actually this is not perfect solution because of global scope modifications - imagine
+ parallel execution."
+
+ originalFormatterSettings := IdentityDictionary new.
+ testFormatterSettings keysAndValuesDo: [ :key :value |
+ originalFormatterSettings at: key put: (RBFormatter perform: key).
+ RBFormatter perform: key asMutator with: value.
+ ].
+
+ "Created: / 20-08-2014 / 22:21:17 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 21-08-2014 / 11:38:24 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+setUpGeneratorOrRefactoring: aGeneratorOrRefactoring
+
+ aGeneratorOrRefactoring codeBuilder: codeBuilder.
+ aGeneratorOrRefactoring refactoryBuilder: refactoryBuilder.
+ aGeneratorOrRefactoring changeManager: changeManager.
+ aGeneratorOrRefactoring userPreferences: userPreferences
+
+ "Created: / 23-08-2014 / 15:59:58 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+tearDown
+
+ self restoreFormatterSettings.
+ changeManager redoChanges.
+ mock unmockAll
+
+ "Created: / 27-05-2014 / 19:26:30 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 15:54:15 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/CustomCodeGeneratorOrRefactoringTestCaseTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -0,0 +1,58 @@
+"{ Package: 'jn:refactoring_custom' }"
+
+TestCase subclass:#CustomCodeGeneratorOrRefactoringTestCaseTests
+ instanceVariableNames:'spaceAfterReturnToken maxLengthForSingleLineBlocks
+ blockArgumentsOnNewLine'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Refactoring-Custom-Tests'
+!
+
+!CustomCodeGeneratorOrRefactoringTestCaseTests methodsFor:'initialization & release'!
+
+setUp
+
+ spaceAfterReturnToken := RBFormatter spaceAfterReturnToken.
+ maxLengthForSingleLineBlocks := RBFormatter maxLengthForSingleLineBlocks.
+ blockArgumentsOnNewLine := RBFormatter blockArgumentsOnNewLine.
+
+ "Modified: / 21-08-2014 / 11:53:07 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+tearDown
+
+ RBFormatter spaceAfterReturnToken: spaceAfterReturnToken.
+ RBFormatter maxLengthForSingleLineBlocks: maxLengthForSingleLineBlocks.
+ RBFormatter blockArgumentsOnNewLine: blockArgumentsOnNewLine.
+
+ "Modified: / 21-08-2014 / 11:54:09 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomCodeGeneratorOrRefactoringTestCaseTests methodsFor:'tests'!
+
+test_formatter_settings_modified_and_then_restored
+ | generatorTestCase |
+
+ generatorTestCase := CustomCodeGeneratorOrRefactoringTestCase new.
+ generatorTestCase initalizeTestFormatterSettings.
+ generatorTestCase formatterSettings
+ at: #spaceAfterReturnToken put: spaceAfterReturnToken not;
+ at: #maxLengthForSingleLineBlocks put: maxLengthForSingleLineBlocks + 10;
+ at: #blockArgumentsOnNewLine put: blockArgumentsOnNewLine not.
+
+ generatorTestCase setUpFormatterSettings.
+
+ self assert: (RBFormatter spaceAfterReturnToken) == (spaceAfterReturnToken not).
+ self assert: (RBFormatter maxLengthForSingleLineBlocks) == (maxLengthForSingleLineBlocks + 10).
+ self assert: (RBFormatter blockArgumentsOnNewLine) == (blockArgumentsOnNewLine not).
+
+ generatorTestCase restoreFormatterSettings.
+
+ self assert: (RBFormatter spaceAfterReturnToken) == spaceAfterReturnToken.
+ self assert: (RBFormatter maxLengthForSingleLineBlocks) == maxLengthForSingleLineBlocks.
+ self assert: (RBFormatter blockArgumentsOnNewLine) == blockArgumentsOnNewLine.
+
+ "Created: / 21-08-2014 / 11:44:28 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 11:16:37 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
--- a/CustomCodeGeneratorTestCase.st Fri Aug 22 19:09:38 2014 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,222 +0,0 @@
-"{ Package: 'jn:refactoring_custom' }"
-
-TestCase subclass:#CustomCodeGeneratorTestCase
- instanceVariableNames:'context builder generator classes changeManager userPreferences
- mock'
- classVariableNames:''
- poolDictionaries:''
- category:'Interface-Refactoring-Custom-Tests'
-!
-
-!CustomCodeGeneratorTestCase methodsFor:'accessing'!
-
-generator
- "Should return an instance of CustomCodeGenerator subclass"
-
- ^ self subclassResponsibility
-
- "Created: / 27-05-2014 / 19:16:44 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-! !
-
-!CustomCodeGeneratorTestCase methodsFor:'asserting'!
-
-assertClassExists: aClassName
-
- self assert: (Smalltalk classNamed: aClassName asString) isNil not
-
- "Created: / 15-06-2014 / 16:42:19 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-assertClassMethodSource: aSourceCode atSelector: aSelector
- "Assert that source code is same at given selector for first generated class"
-
- | className class |
-
- className := classes first classNameBuilded.
- class := Smalltalk classNamed: className.
-
- ^ self assertClassMethodSource: aSourceCode atSelector: aSelector forClass: class
-
- "Created: / 11-07-2014 / 20:11:01 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-assertClassMethodSource: expectedSource atSelector: aSelector forClass: aClass
- "Assert that source code is same at given selector for given class"
-
- | actualSource |
-
- actualSource := aClass theMetaclass sourceCodeAt: aSelector asSymbol.
-
- ^ self assertSource: expectedSource sameAs: actualSource
-
- "Created: / 11-07-2014 / 20:09:59 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-assertClassNotExists: aClassName
-
- self assert: (Smalltalk classNamed: aClassName asString) isNil
-
- "Created: / 15-06-2014 / 16:42:37 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-assertMethodSource: aSourceCode atSelector: aSelector
- "Assert that source code is same at given selector for first generated class"
-
- | className class |
-
- className := classes first classNameBuilded.
- class := Smalltalk classNamed: className.
-
- ^ self assertMethodSource: aSourceCode atSelector: aSelector forClass: class
-
- "Created: / 27-05-2014 / 20:06:17 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 30-05-2014 / 22:36:09 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-assertMethodSource: expectedSource atSelector: aSelector forClass: aClass
- "Assert that source code is same at given selector for given class"
-
- | actualSource |
-
- actualSource := aClass sourceCodeAt: aSelector asSymbol.
-
- ^ self assertSource: expectedSource sameAs: actualSource
-
- "Created: / 27-05-2014 / 20:08:32 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-assertSource: expectedSource sameAs: actualSource
-
- self assert: (Change isSource: expectedSource sameSourceAs: actualSource)
-
- "Created: / 25-05-2014 / 22:18:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 10-07-2014 / 11:31:19 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-! !
-
-!CustomCodeGeneratorTestCase methodsFor:'code generation helpers'!
-
-createClass
- "Returns new class change with some name"
-
- | class |
-
- class := builder createClass.
- class className: 'DummyClassForGeneratorTestCase'.
- classes add: class.
-
- ^ class
-
- "Created: / 29-05-2014 / 23:22:52 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-! !
-
-!CustomCodeGeneratorTestCase methodsFor:'context templates'!
-
-classWithInstanceVariable
- | class |
-
- class := self createClass.
- class instanceVariableNames: 'instanceVariable'.
-
- context selectedClasses: (Array with: class)
-
- "Created: / 29-05-2014 / 00:33:40 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 29-05-2014 / 23:44:20 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-classWithThreeInstanceVariables
- | class |
-
- class := self createClass.
- class instanceVariableNames: 'instanceVariable_01 instanceVariable_02 instanceVariable_03'.
-
- context selectedClasses: (Array with: class).
- context selectedVariables: (class instanceVariableNames).
-
- "Created: / 13-07-2014 / 21:56:12 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-classWithTwoInstanceVariables
- | class |
-
- class := self createClass.
- class instanceVariableNames: 'instanceVariable_01 instanceVariable_02'.
-
- context selectedClasses: (Array with: class).
- context selectedVariables: (class instanceVariableNames).
-
- "Created: / 13-07-2014 / 21:45:06 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-! !
-
-!CustomCodeGeneratorTestCase methodsFor:'executing'!
-
-createContext: contextTemplateName
- "Creates context by given template name
- (produces more readable code than just method call)"
-
- self perform: contextTemplateName asSymbol
-
- "Created: / 27-07-2014 / 12:27:08 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-executeGeneratorInContext: contextTemplateName
- "Executes generator in context created by given name"
-
- self perform: contextTemplateName asSymbol.
- generator executeInContext: context
-
- "Created: / 27-05-2014 / 20:03:14 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 29-05-2014 / 23:38:08 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-! !
-
-!CustomCodeGeneratorTestCase methodsFor:'initialization & release'!
-
-defaultUserPreferences
-
- userPreferences
- generateComments: true;
- generateCommentsForAspectMethods: true;
- generateCommentsForGetters: true;
- generateCommentsForSetters: true
-
- "Created: / 09-06-2014 / 22:36:59 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-setUp
-
- classes := OrderedCollection new.
- mock := CustomMock new.
-
- context := CustomSubContext new.
- builder := CustomSourceCodeBuilder new.
- changeManager := CustomLocalChangeManager new.
- userPreferences := UserPreferences new.
- self defaultUserPreferences.
- generator := self generator.
-
- generator isNil ifFalse: [
- self setUpGenerator: generator
- ]
-
- "Created: / 27-05-2014 / 19:16:44 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 10-07-2014 / 11:58:11 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-setUpGenerator: aGenerator
-
- aGenerator builder: builder.
- aGenerator changeManager: changeManager.
- aGenerator userPreferences: userPreferences
-
- "Created: / 10-07-2014 / 11:57:38 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-tearDown
-
- builder redoChanges.
- changeManager redoChanges.
- mock unmockAll
-
- "Created: / 27-05-2014 / 19:26:30 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 16-06-2014 / 00:45:02 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-! !
-
--- a/CustomCodeGeneratorTestCaseCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomCodeGeneratorTestCaseCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -52,7 +52,7 @@
self executeGeneratorInContext: #classWithInstanceVariable.
self assertMethodSource: expectedSource atSelector: #instanceVariable'.
- builder
+ codeBuilder
class: aTestClass;
protocol: 'tests';
--- a/CustomCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomCodeGenerator new
! !
@@ -29,7 +29,7 @@
:aCustomContext |
aCustomContext selectedClasses do:[ :class |
- builder
+ codeBuilder
source: 'selector_01 ^ 1';
createMethod.
].
@@ -40,13 +40,13 @@
:aCustomContext |
aCustomContext selectedClasses do:[ :class |
- builder
+ codeBuilder
source: 'selector_02 ^ 2';
createMethod.
].
].
- generator
+ generatorOrRefactoring
executeSubGeneratorClasses: (
Array
with: subGeneratorClass_01
--- a/CustomCodeGeneratorUserPreferencesTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomCodeGeneratorUserPreferencesTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomCodeGeneratorUserPreferencesTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomCodeGeneratorUserPreferencesTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,8 +9,7 @@
!CustomCodeGeneratorUserPreferencesTests methodsFor:'accessing'!
-generator
-
+generatorOrRefactoring
^ nil
"Modified: / 09-06-2014 / 22:42:50 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/CustomCodeSelectionToResourceTranslation.st Sun Aug 24 01:49:18 2014 +0100
@@ -0,0 +1,82 @@
+"{ Package: 'jn:refactoring_custom' }"
+
+CustomRefactoring subclass:#CustomCodeSelectionToResourceTranslation
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Refactoring-Custom'
+!
+
+!CustomCodeSelectionToResourceTranslation class methodsFor:'documentation'!
+
+documentation
+"
+ Wraps variable, literal, string or expression code selection
+ with following translation call: resources string:'Some string...'
+ Ie.: when 'Some string...' is selected in the code editor then its
+ replaced by: resources string:'Some string...'
+
+ [author:]
+ Jakub Nesveda <nesvejak@fit.cvut.cz>
+
+"
+! !
+
+!CustomCodeSelectionToResourceTranslation class methodsFor:'accessing-presentation'!
+
+description
+ "Returns more detailed description of the receiver"
+
+ ^ 'Wrap code selection with translation call - resources string:'
+
+ "Created: / 21-08-2014 / 23:46:18 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+label
+ "Returns show label describing the receiver. This label
+ is used in UI as menu item/tree item label."
+
+ ^ 'Selection to Resources Translation'
+
+ "Created: / 21-08-2014 / 23:43:03 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomCodeSelectionToResourceTranslation class methodsFor:'queries'!
+
+availableInContext:aCustomContext
+ "Returns true if the generator/refactoring is available in given
+ context, false otherwise.
+
+ Called by the UI to figure out what generators / refactorings
+ are available at given point. See class CustomContext for details."
+
+ ^ true
+
+ "Created: / 21-08-2014 / 23:28:25 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+availableInPerspective:aCustomPerspective
+ "Returns true if the generator/refactoring is available in given
+ perspective, false otherwise.
+
+ Called by the UI to figure out what generators / refactorings
+ to show"
+
+ ^ true
+
+ "Created: / 21-08-2014 / 23:28:34 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomCodeSelectionToResourceTranslation methodsFor:'executing'!
+
+buildInContext:aCustomContext
+ "Performs a refactoring within given context scope"
+
+ refactoryBuilder
+ replace: '``@expression'
+ with: '(resources string: (``@expression))'
+ inCodes: aCustomContext selectedCodes
+
+ "Created: / 23-08-2014 / 00:16:58 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
--- a/CustomContext.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomContext.st Sun Aug 24 01:49:18 2014 +0100
@@ -37,12 +37,14 @@
"Modified (comment): / 26-04-2014 / 22:38:18 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
-selectedCode
- "a string with selected source code"
+selectedCodes
+ "a collection with source codes (CustomSourceCodeSelection)
+ with selected interval (exact position in source code) and
+ corresponding class, method, selector."
self subclassResponsibility
- "Created: / 05-08-2014 / 21:20:36 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Created: / 18-08-2014 / 21:28:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
selectedMethodProtocols
--- a/CustomDefaultGetterMethodsCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomDefaultGetterMethodsCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -50,7 +50,7 @@
comment := comment bindWith: aName.
].
- methodBuilder := builder methodBuilder.
+ methodBuilder := codeBuilder methodBuilder.
methodBuilder
source: '`@methodName
`"comment
--- a/CustomDefaultGetterMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomDefaultGetterMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomDefaultGetterMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomDefaultGetterMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomDefaultGetterMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomDefaultGetterMethodsCodeGenerator new
! !
--- a/CustomLazyInitializationAccessMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomLazyInitializationAccessMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomLazyInitializationAccessMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomLazyInitializationAccessMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomLazyInitializationAccessMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomLazyInitializationAccessMethodsCodeGenerator new
! !
--- a/CustomLazyInitializationGetterMethodsCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomLazyInitializationGetterMethodsCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -58,7 +58,7 @@
comment := comment bindWith: varType with: aName.
].
- methodBuilder := builder methodBuilder.
+ methodBuilder := codeBuilder methodBuilder.
methodBuilder
source: '`@methodName
`"comment
--- a/CustomLazyInitializationGetterMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomLazyInitializationGetterMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomLazyInitializationGetterMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomLazyInitializationGetterMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomLazyInitializationGetterMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomLazyInitializationGetterMethodsCodeGenerator new
! !
--- a/CustomLocalChangeManager.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomLocalChangeManager.st Sun Aug 24 01:49:18 2014 +0100
@@ -42,21 +42,24 @@
performChange: aRefactoringChange
+ "/ Transcript showCR: 'EXECUTE: ', aRefactoringChange asString.
+
executedChanges add: aRefactoringChange execute
- "Modified: / 31-05-2014 / 19:28:43 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 15:52:03 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
redoChanges
"redo all changes made by performChange: method"
executedChanges reversed do: [ :change |
+ "/ Transcript showCR: 'REDO: ', change asString.
change execute
].
executedChanges removeAll
"Created: / 31-05-2014 / 19:29:44 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 15-06-2014 / 17:02:42 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 15:51:55 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
--- a/CustomMultiSetterMethodsCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomMultiSetterMethodsCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -7,6 +7,7 @@
category:'Interface-Refactoring-Custom'
!
+
!CustomMultiSetterMethodsCodeGenerator class methodsFor:'accessing-presentation'!
description
@@ -76,7 +77,7 @@
assignVariablesCode := assignVariablesCode, variableName asString, ' := ', argumentName, '. '.
].
- method := builder createMethod.
+ method := codeBuilder createMethod.
method
class: aClass;
protocol: 'accessing';
@@ -106,3 +107,10 @@
"Modified: / 13-07-2014 / 20:45:41 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
+!CustomMultiSetterMethodsCodeGenerator class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- a/CustomMultiSetterMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomMultiSetterMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomMultiSetterMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomMultiSetterMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomMultiSetterMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomMultiSetterMethodsCodeGenerator new
! !
@@ -20,7 +20,7 @@
context
selectedClasses: (Array with: self class).
- self assert: (generator class availableInContext: context) not.
+ self assert: (generatorOrRefactoring class availableInContext: context) not.
"Created: / 13-07-2014 / 20:11:01 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
@@ -31,7 +31,7 @@
selectedClasses: (Array with: self class);
selectedVariables: (Array with: 'var_01').
- self assert: (generator class availableInContext: context) not.
+ self assert: (generatorOrRefactoring class availableInContext: context) not.
"Created: / 13-07-2014 / 20:08:56 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
@@ -42,7 +42,7 @@
selectedClasses: (Array with: self class);
selectedVariables: (Array with: 'var_01' with: 'var_02' with: 'var_03').
- self assert: (generator class availableInContext: context).
+ self assert: (generatorOrRefactoring class availableInContext: context).
"Created: / 13-07-2014 / 20:10:29 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
@@ -53,7 +53,7 @@
selectedClasses: (Array with: self class);
selectedVariables: (Array with: 'var_01' with: 'var_02').
- self assert: (generator class availableInContext: context).
+ self assert: (generatorOrRefactoring class availableInContext: context).
"Created: / 13-07-2014 / 20:09:36 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/CustomParseTreeRewriter.st Sun Aug 24 01:49:18 2014 +0100
@@ -0,0 +1,31 @@
+"{ Package: 'jn:refactoring_custom' }"
+
+ParseTreeRewriter subclass:#CustomParseTreeRewriter
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Refactoring-Custom'
+!
+
+!CustomParseTreeRewriter class methodsFor:'documentation'!
+
+documentation
+"
+ A small hack to initialize true ParseTreeRewriter - its current implementation returns ParseTreeSourceRewriter.
+
+ [author:]
+ Jakub Nesveda <nesvejak@fit.cvut.cz>
+
+"
+! !
+
+!CustomParseTreeRewriter class methodsFor:'instance creation'!
+
+new
+ "A small hack not to use ParseTreeSourceRewriter, but ParseTreeRewriter"
+
+ ^self basicNew initialize.
+
+ "Created: / 13-08-2014 / 00:23:19 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
--- a/CustomRefactoring.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomRefactoring.st Sun Aug 24 01:49:18 2014 +0100
@@ -16,32 +16,6 @@
"Created: / 26-01-2014 / 21:39:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
-!CustomRefactoring methodsFor:'executing'!
-
-executeInContext: aCustomContext
- "Generates the code or perform the refactoring. This method
- is guaranteed to be called only if #availableInContext: returns
- true.
-
- Called by the UI when user want to perform the task"
-
-
- self startCollectChanges.
- self refactorInContext: aCustomContext.
- self executeChangesInContext: aCustomContext changesName: self class description.
-
- "Created: / 07-08-2014 / 22:54:12 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 11-08-2014 / 23:07:13 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-refactorInContext: aCustomContext
- "Performs a refactoring within given context scope"
-
- ^ self subclassResponsibility
-
- "Created: / 07-08-2014 / 23:27:28 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-! !
-
!CustomRefactoring class methodsFor:'documentation'!
version_HG
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/CustomRefactoryBuilder.st Sun Aug 24 01:49:18 2014 +0100
@@ -0,0 +1,260 @@
+"{ Package: 'jn:refactoring_custom' }"
+
+RefactoryBuilder subclass:#CustomRefactoryBuilder
+ instanceVariableNames:'changeManager'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Refactoring-Custom'
+!
+
+!CustomRefactoryBuilder class methodsFor:'documentation'!
+
+documentation
+"
+ Encapsulates performing refactoring changes on the source code within single object.
+ Single refactorings are stored as change objects which represens changes in the source code.
+
+ [author:]
+ Jakub Nesveda <nesvejak@fit.cvut.cz>
+
+"
+! !
+
+!CustomRefactoryBuilder methodsFor:'accessing'!
+
+change
+ "Returns single code change from collected code changes."
+
+ | change |
+
+ changes isEmpty ifTrue: [
+ ^ nil
+ ].
+
+ change := CompositeRefactoryChange new.
+
+ changes do: [ :codeChange |
+ change addChange: codeChange
+ ].
+
+ ^ change
+
+ "Created: / 15-08-2014 / 00:45:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified (comment): / 17-08-2014 / 17:16:38 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+changeManager
+ ^ changeManager
+!
+
+changeManager:something
+ changeManager := something.
+!
+
+searcher
+
+ ^ ParseTreeSearcher new
+
+ "Created: / 16-08-2014 / 22:13:25 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomRefactoryBuilder methodsFor:'compiling'!
+
+execute
+ "
+ Most likely as compile method, but without undo change
+ in global RefactoryChangeManager
+ (true for CustomLocalChangeManager changeManager implementation)
+ "
+
+ changeManager performChange: self change
+
+ "Created: / 15-08-2014 / 00:45:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+redoChanges
+ "redo all changes made by execute method"
+
+ changeManager redoChanges
+
+ "Created: / 15-08-2014 / 00:46:47 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomRefactoryBuilder methodsFor:'initialization'!
+
+initialize
+ "Invoked when a new instance is created."
+
+ super initialize.
+ changeManager := CustomLocalChangeManager new.
+
+ "Created: / 15-08-2014 / 00:42:39 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomRefactoryBuilder methodsFor:'refactory-changes'!
+
+executeReplace: searchPattern with: rewritePattern inMethod: aMethod
+ "Executes replace in a method source and then creates a method change"
+
+ | newTree change |
+
+ newTree := (CustomParseTreeRewriter new)
+ replace: searchPattern with: rewritePattern;
+ executeTree: aMethod parseTree;
+ tree.
+
+ change := InteractiveAddMethodChange
+ compile: newTree newSource
+ in: aMethod mclass
+ classified: aMethod category.
+
+ changes add: change
+
+ "Created: / 17-08-2014 / 18:45:20 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+replace: searchPattern with: rewritePattern inContext: aCustomContext
+ "Searches for given pattern in methods source code and if source code matches then executes replacement"
+
+ self
+ search: searchPattern
+ inContext: aCustomContext
+ withResultDo: [ :method |
+ self executeReplace: searchPattern with: rewritePattern inMethod: method
+ ]
+
+ "Created: / 16-08-2014 / 19:15:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified (comment): / 17-08-2014 / 19:30:11 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomRefactoryBuilder methodsFor:'searching'!
+
+search: searchPattern inClass: aClass withResultDo: aBlock
+ | methods |
+
+ methods := OrderedCollection new.
+
+ methods addAll: aClass theNonMetaclass methodDictionary values.
+ methods addAll: aClass theMetaclass methodDictionary values.
+
+ self search: searchPattern inMethods: methods withResultDo: aBlock
+
+ "Created: / 17-08-2014 / 13:15:03 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 17-08-2014 / 17:18:27 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+search: searchPattern inClassCategories: aCategoryCollection withResultDo: aBlock
+
+ "To be implemented"
+
+ "Created: / 17-08-2014 / 16:21:23 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+search: searchPattern inClasses: aClassCollection withResultDo: aBlock
+
+ aClassCollection do:[ :class |
+ self search: searchPattern inClass: class withResultDo: aBlock
+ ].
+
+ "Created: / 17-08-2014 / 16:21:22 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+search: searchPattern inCodes: aCodeSelectionCollection withResultDo: aBlock
+
+ "To be implemented"
+
+ "Created: / 21-08-2014 / 21:22:13 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+search: searchPattern inContext: aCustomContext withResultDo: aBlock
+ "Searches for source code pattern in whole context which contains code, methods, classes... "
+
+ aCustomContext selectedCodes notNil ifTrue: [
+ self
+ search: searchPattern
+ inCodes: aCustomContext selectedCodes
+ withResultDo: aBlock
+ ].
+
+ aCustomContext selectedMethods notNil ifTrue: [
+ self
+ search: searchPattern
+ inMethods: aCustomContext selectedMethods
+ withResultDo: aBlock
+ ].
+
+ aCustomContext selectedMethodProtocols notNil ifTrue: [
+ self
+ search: searchPattern
+ inMethodProtocols: aCustomContext selectedMethodProtocols
+ withResultDo: aBlock
+ ].
+
+ aCustomContext selectedClasses notNil ifTrue: [
+ self
+ search: searchPattern
+ inClasses: aCustomContext selectedClasses
+ withResultDo: aBlock
+ ].
+
+ aCustomContext selectedClassCategories notNil ifTrue: [
+ self
+ search: searchPattern
+ inClassCategories: aCustomContext selectedClassCategories
+ withResultDo: aBlock
+ ].
+
+ aCustomContext selectedPackages notNil ifTrue: [
+ self
+ search: searchPattern
+ inPackages: aCustomContext selectedPackages
+ withResultDo: aBlock
+ ].
+
+ "Created: / 17-08-2014 / 16:21:24 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 21-08-2014 / 21:22:03 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+search: searchPattern inMethod: aMethod withResultDo: aBlock
+ | parseTree |
+
+ parseTree := aMethod parseTree.
+
+ parseTree isNil ifTrue: [
+ self error: 'Cannot retrieve parseTree for method: ', aMethod asString.
+ ]
+ ifFalse: [
+ (self searcher)
+ matches: searchPattern do: [ :aNode :answer |
+ aBlock value: aMethod
+ ];
+ executeTree: parseTree
+ ].
+
+ "Created: / 16-08-2014 / 22:27:35 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+search: searchPattern inMethodProtocols: aProtocolCollection withResultDo: aBlock
+
+ "To be implemented"
+
+ "Created: / 17-08-2014 / 16:21:21 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+search: searchPattern inMethods: aMethodCollection withResultDo: aBlock
+
+ aMethodCollection do: [ :method |
+ self search: searchPattern inMethod: method withResultDo: aBlock
+ ].
+
+ "Created: / 17-08-2014 / 11:56:23 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 17-08-2014 / 20:35:16 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+search: searchPattern inPackages: aPackageCollection withResultDo: aBlock
+
+ "To be implemented"
+
+ "Created: / 17-08-2014 / 16:21:24 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
--- a/CustomReplaceIfNilWithIfTrueRefactoring.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomReplaceIfNilWithIfTrueRefactoring.st Sun Aug 24 01:49:18 2014 +0100
@@ -54,66 +54,14 @@
!CustomReplaceIfNilWithIfTrueRefactoring methodsFor:'executing'!
-refactorInContext:aCustomContext
+buildInContext: aCustomContext
"Performs a refactoring within given context scope"
- ^ self
+ refactoryBuilder
replace: '``@receiver ifNil: ``@nilBlock ifNotNil: ``@notNilBlock'
with: '``@receiver isNil ifTrue: ``@nilBlock ifFalse: ``@notNilBlock'
inContext: aCustomContext
- "Created: / 07-08-2014 / 23:29:28 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 09-08-2014 / 12:54:18 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-!
-
-replace: searchPattern with: rewritePattern inContext: aCustomContext
- | matchedMethods |
-
- matchedMethods := OrderedCollection new.
-
- aCustomContext selectedClasses do: [ :class |
- | methods |
-
- methods := OrderedCollection new.
-
- methods addAll: class theNonMetaclass methodDictionary values.
- methods addAll: class theMetaclass methodDictionary values.
-
- methods do:[ :method |
- | parseTree |
-
- parseTree := method parseTree.
-
- parseTree isNil ifTrue: [
- self error: 'Cannot retrieve parseTree for method: ', method asString.
- ]
- ifFalse: [
- (ParseTreeSearcher new)
- matches: searchPattern do: [ :aNode :answer |
- matchedMethods add: method
- ];
- executeTree: parseTree
- ].
- ].
- ].
-
- matchedMethods do: [ :method |
- | newTree change |
-
- newTree := (ParseTreeRewriter new)
- replace: searchPattern with: rewritePattern;
- executeTree: method parseTree;
- tree.
- Transcript showCR: newTree newSource.
- change := InteractiveAddMethodChange
- compile: newTree newSource
- in: method mclass
- classified: method category.
-
- self addChange: change
- ].
-
- "Created: / 09-08-2014 / 12:54:18 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 11-08-2014 / 23:20:24 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Created: / 23-08-2014 / 00:17:55 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
--- a/CustomReplaceIfNilWithIfTrueRefactoringTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomReplaceIfNilWithIfTrueRefactoringTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomReplaceIfNilWithIfTrueRefactoringTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomReplaceIfNilWithIfTrueRefactoringTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,30 +9,17 @@
!CustomReplaceIfNilWithIfTrueRefactoringTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomReplaceIfNilWithIfTrueRefactoring new
! !
-!CustomReplaceIfNilWithIfTrueRefactoringTests methodsFor:'initialization & release'!
-
-setUpGenerator: aGenerator
-
- "/ aGenerator builder: builder.
- aGenerator changeManager: changeManager.
- aGenerator userPreferences: userPreferences
-
- "Created: / 10-08-2014 / 10:02:42 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
-! !
-
!CustomReplaceIfNilWithIfTrueRefactoringTests methodsFor:'tests'!
test_if_nil_replaced_with_is_nil_if_true
| expectedSource class method |
- self skipIf: true description: 'Incomplete'.
-"
- class := builder createClassImmediate: 'DummyClassForTestCase01'.
- method := builder createMethod.
+ class := codeBuilder createClassImmediate: 'DummyClassForTestCase01'.
+ method := codeBuilder createMethod.
method
class: class;
protocol: 'protocol';
@@ -42,22 +29,22 @@
]
ifNotNil: [ self information: ''info'' ].
'.
-"
- class := TestClass.
+
context selectedClasses: (Array with: class).
- "/builder execute.
+ codeBuilder execute.
+
+ generatorOrRefactoring executeInContext: context.
- generator executeInContext: context.
-
- expectedSource := 'selector: arg
- arg isNil ifTrue: [
- self warn: ''nil''.
- ]
- ifFalse: [ self information: ''info'' ].'.
+ expectedSource := 'selector:arg
+ arg isNil ifTrue:[
+ self warn:''nil''.
+ ] ifFalse:[
+ self information:''info''
+ ].'.
self assertMethodSource: expectedSource atSelector: #selector: forClass: class.
"Created: / 10-08-2014 / 09:42:07 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 12-08-2014 / 01:16:08 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 13-08-2014 / 00:33:57 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
--- a/CustomSimpleAccessMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomSimpleAccessMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomSimpleAccessMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomSimpleAccessMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomSimpleAccessMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomSimpleAccessMethodsCodeGenerator new
! !
--- a/CustomSimpleGetterMethodsCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomSimpleGetterMethodsCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -54,7 +54,7 @@
comment := comment bindWith: varType with: aName.
].
- methodBuilder := builder methodBuilder.
+ methodBuilder := codeBuilder methodBuilder.
methodBuilder
source: '`@methodName
`"comment
--- a/CustomSimpleGetterMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomSimpleGetterMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomSimpleGetterMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomSimpleGetterMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,8 +9,7 @@
!CustomSimpleGetterMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
-
+generatorOrRefactoring
^ CustomSimpleGetterMethodsCodeGenerator new
"Modified: / 29-05-2014 / 00:07:09 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
--- a/CustomSimpleSetterMethodsCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomSimpleSetterMethodsCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -58,7 +58,7 @@
comment := comment bindWith: varType with: aName.
].
- methodBuilder := builder methodBuilder.
+ methodBuilder := codeBuilder methodBuilder.
methodBuilder
source: '`@methodName
`"comment
--- a/CustomSimpleSetterMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomSimpleSetterMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomSimpleSetterMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomSimpleSetterMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomSimpleSetterMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomSimpleSetterMethodsCodeGenerator new
! !
--- a/CustomSimpleTestCaseCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomSimpleTestCaseCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -25,7 +25,7 @@
buildForClass: aClass testClass: aTestClass
- builder
+ codeBuilder
class: aTestClass;
protocol: 'tests';
--- a/CustomSourceCodeBuilder.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomSourceCodeBuilder.st Sun Aug 24 01:49:18 2014 +0100
@@ -56,6 +56,14 @@
"Created: / 24-03-2014 / 09:02:36 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
+changeManager
+ ^ changeManager
+!
+
+changeManager:something
+ changeManager := something.
+!
+
codeBuilds
^ codeBuilds
! !
@@ -654,11 +662,13 @@
"/ Transcript showCR: 'SRC2::: ', method source asString.
"/ Transcript showCR: 'BODY::: ', method body asString.
+ "/ Transcript showCR: 'CLASS::: ', method className.
+ "/ Transcript showCR: '-----------'.
^ method formattedCode
"Created: / 18-05-2014 / 16:48:27 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 03-07-2014 / 15:38:52 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 21-08-2014 / 12:19:26 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
category:aString
--- a/CustomSourceCodeBuilderTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomSourceCodeBuilderTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomSourceCodeBuilderTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomSourceCodeBuilderTests
instanceVariableNames:'refactoryChangeManager'
classVariableNames:''
poolDictionaries:''
@@ -9,9 +9,8 @@
!CustomSourceCodeBuilderTests methodsFor:'accessing'!
-generator
-
- ^ nil
+generatorOrRefactoring
+ ^ nil
"Modified: / 31-05-2014 / 22:48:25 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
@@ -46,7 +45,7 @@
test_all_class_var_names
| class actualClassVars expectedClassVars |
- class := builder createClass.
+ class := codeBuilder createClass.
class
className: 'MockClassForTestCase';
classVariableNames: 'ClassVar1 ClassVar2'.
@@ -62,7 +61,7 @@
test_builder_change_nil_as_default
- self assert: builder change isNil.
+ self assert: codeBuilder change isNil.
"Created: / 22-07-2014 / 22:52:23 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
@@ -72,7 +71,7 @@
class := self class.
- builder
+ codeBuilder
class: class;
protocol: 'a protocol';
source: '`@selector
@@ -86,7 +85,7 @@
self assert: (class includesSelector: #aSelector) not.
self assert: (class includesSelector: #aSelector2) not.
- builder execute.
+ codeBuilder execute.
self assert: (class includesSelector: #aSelector).
self assert: (class includesSelector: #aSelector2).
@@ -106,7 +105,7 @@
className := 'TestClassNameForTestCase'.
- class := builder
+ class := codeBuilder
className: className;
classVariableNames: 'ClassVar1 ClassVar2';
instanceVariableNames: 'instVar1 instVar2';
@@ -115,7 +114,7 @@
category: 'Some-Category';
createClass.
- builder
+ codeBuilder
class: class;
protocol: 'a protocol';
source: '`@selector
@@ -125,7 +124,7 @@
self assertClassNotExists: className.
- builder execute.
+ codeBuilder execute.
class := Smalltalk classNamed: className.
@@ -155,13 +154,13 @@
self assertClassNotExists: className.
- builder := CustomSourceCodeBuilder new.
- class := builder createClass.
+ codeBuilder := CustomSourceCodeBuilder new.
+ class := codeBuilder createClass.
class className: className.
self assertClassNotExists: className.
- method := builder createMethod.
+ method := codeBuilder createMethod.
method
class: class theMetaclass;
protocol: 'a protocol';
@@ -171,7 +170,7 @@
self assertClassNotExists: className.
self assert: lastUndoChange = (self lastUndoChange).
- builder compile.
+ codeBuilder compile.
self assertClassExists: className.
self assert: (lastUndoChange = (self lastUndoChange)) not.
@@ -196,13 +195,13 @@
self assertClassNotExists: className.
- builder := CustomSourceCodeBuilder new.
- class := builder createClass.
+ codeBuilder := CustomSourceCodeBuilder new.
+ class := codeBuilder createClass.
class className: className.
self assertClassNotExists: className.
- method := builder createMethod.
+ method := codeBuilder createMethod.
method
class: class;
protocol: 'a protocol';
@@ -212,7 +211,7 @@
self assertClassNotExists: className.
self assert: lastUndoChange = (self lastUndoChange).
- builder compile.
+ codeBuilder compile.
self assertClassExists: className.
self assert: (lastUndoChange = (self lastUndoChange)) not.
@@ -232,7 +231,7 @@
class := self class.
- method := builder createMethod.
+ method := codeBuilder createMethod.
method
class: self class;
protocol: 'a protocol';
@@ -242,7 +241,7 @@
self assert: (class includesSelector: #aSelector) not.
- builder execute.
+ codeBuilder execute.
generatedSource := (class sourceCodeAt: #aSelector).
expectedSource := 'aSelector
@@ -263,7 +262,7 @@
test_create_class_immediate
| mockClass |
- mockClass := builder createClassImmediate: 'MockClassForTestCase'.
+ mockClass := codeBuilder createClassImmediate: 'MockClassForTestCase'.
self assert: mockClass new className = 'MockClassForTestCase'.
self assert: mockClass superclass new className = 'Object'.
@@ -279,7 +278,7 @@
test_create_class_immediate_with_given_super_class_name
| mockClass |
- mockClass := builder createClassImmediate: 'MockClassForTestCase' superClassName: 'Object'.
+ mockClass := codeBuilder createClassImmediate: 'MockClassForTestCase' superClassName: 'Object'.
self assert: mockClass new className = 'MockClassForTestCase'.
self assert: mockClass superclass new className = 'Object'.
@@ -297,8 +296,8 @@
expectedSource := 'instanceMethod:aParam
^ self'.
- mockClass := builder createClassImmediate: 'MockClassForTestCase' superClassName: 'Object'.
- builder createMethodImmediate: mockClass protocol: 'a protocol' source: expectedSource.
+ mockClass := codeBuilder createClassImmediate: 'MockClassForTestCase' superClassName: 'Object'.
+ codeBuilder createMethodImmediate: mockClass protocol: 'a protocol' source: expectedSource.
actualSource := (mockClass sourceCodeAt: #instanceMethod:).
@@ -311,8 +310,8 @@
test_empty_class_not_in_change
- builder createClass.
- self assert: builder change isNil.
+ codeBuilder createClass.
+ self assert: codeBuilder change isNil.
"Created: / 22-07-2014 / 22:22:04 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
@@ -320,7 +319,7 @@
test_method_source_builded
| methodBuilder source |
- methodBuilder := builder methodBuilder.
+ methodBuilder := codeBuilder methodBuilder.
methodBuilder
source: '`@methodName
@@ -341,7 +340,7 @@
test_method_source_builded_with_comment
| methodBuilder buildedSource expectedSource |
- methodBuilder := builder methodBuilder.
+ methodBuilder := codeBuilder methodBuilder.
methodBuilder
source: '`@methodName
@@ -375,7 +374,7 @@
collection do: [ each | each call ].'.
- methodBuilder := builder methodBuilder.
+ methodBuilder := codeBuilder methodBuilder.
methodBuilder
source: originalSource;
replace: '`variableName' with: 'collection'.
@@ -389,8 +388,8 @@
test_nil_changes_not_in_change_collector
- builder createMethod.
- self assert: builder change isNil.
+ codeBuilder createMethod.
+ self assert: codeBuilder change isNil.
"Created: / 22-07-2014 / 22:16:37 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
@@ -399,12 +398,12 @@
| method |
- builder createMethod.
- method := builder createMethod.
+ codeBuilder createMethod.
+ method := codeBuilder createMethod.
method source: 'some ^ 5'.
- self assert: builder codeBuilds length = 2.
- self assert: builder change isNil.
+ self assert: codeBuilder codeBuilds length = 2.
+ self assert: codeBuilder change isNil.
"Created: / 22-07-2014 / 22:39:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
@@ -416,10 +415,10 @@
classNames := Array with: 'DummyClassForTestCase1' with: 'DummyClassForTestCase2'.
classNames do: [ :className |
- classCollection add: (builder className: className; createClass).
+ classCollection add: (codeBuilder className: className; createClass).
].
- builder
+ codeBuilder
classes: classCollection;
protocol: 'a protocol';
source: '`@selector
@@ -427,7 +426,7 @@
replace: '`@selector' with: 'aSelector';
createMethod.
- builder execute.
+ codeBuilder execute.
classNames do: [ :className |
| class method |
@@ -451,21 +450,21 @@
mockSuperClassName := 'MockSuperClassForTestCase'.
mockClassName := 'MockClassForTestCase'.
- mockSuperClass := builder createClassImmediate: mockSuperClassName superClassName: 'Object'.
- builder createClassImmediate: mockClassName superClassName: mockSuperClassName.
+ mockSuperClass := codeBuilder createClassImmediate: mockSuperClassName superClassName: 'Object'.
+ codeBuilder createClassImmediate: mockClassName superClassName: mockSuperClassName.
"/ Instance method
- builder createMethodImmediate: mockSuperClass protocol: 'instance-protocol' source: 'instanceMethod: aParam
+ codeBuilder createMethodImmediate: mockSuperClass protocol: 'instance-protocol' source: 'instanceMethod: aParam
self shouldImplement'.
"/ Class method
- builder createMethodImmediate: mockSuperClass class protocol: 'class-protocol' source: 'classMethod: aParam
+ codeBuilder createMethodImmediate: mockSuperClass class protocol: 'class-protocol' source: 'classMethod: aParam
self shouldImplement'.
self assertClassExists: mockSuperClassName.
self assertClassExists: mockClassName.
- builder redoChanges.
+ codeBuilder redoChanges.
self assertClassNotExists: mockSuperClassName.
self assertClassNotExists: mockClassName.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/CustomSourceCodeSelection.st Sun Aug 24 01:49:18 2014 +0100
@@ -0,0 +1,66 @@
+"{ Package: 'jn:refactoring_custom' }"
+
+Object subclass:#CustomSourceCodeSelection
+ instanceVariableNames:'selectedInterval currentSourceCode selectedMethod selectedClass
+ selectedSelector'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Refactoring-Custom'
+!
+
+!CustomSourceCodeSelection class methodsFor:'documentation'!
+
+documentation
+"
+ Container class which holds actual source code from text editor (source code editor)
+ with exact position of selected source code. Also keeps corresponding class, method and selector
+ to current source code.
+
+ [author:]
+ Jakub Nesveda <nesvejak@fit.cvut.cz>
+
+"
+! !
+
+!CustomSourceCodeSelection methodsFor:'accessing'!
+
+currentSourceCode
+ ^ currentSourceCode
+!
+
+currentSourceCode:something
+ currentSourceCode := something.
+!
+
+selectedClass
+ ^ selectedClass
+!
+
+selectedClass:something
+ selectedClass := something.
+!
+
+selectedInterval
+ ^ selectedInterval
+!
+
+selectedInterval:something
+ selectedInterval := something.
+!
+
+selectedMethod
+ ^ selectedMethod
+!
+
+selectedMethod:something
+ selectedMethod := something.
+!
+
+selectedSelector
+ ^ selectedSelector
+!
+
+selectedSelector:something
+ selectedSelector := something.
+! !
+
--- a/CustomSubContext.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomSubContext.st Sun Aug 24 01:49:18 2014 +0100
@@ -2,7 +2,7 @@
CustomContext subclass:#CustomSubContext
instanceVariableNames:'selectedClasses selectedClassCategories selectedMethodProtocols
- selectedMethods selectedPackages selectedVariables selectedCode'
+ selectedMethods selectedPackages selectedVariables selectedCodes'
classVariableNames:''
poolDictionaries:''
category:'Interface-Refactoring-Custom'
@@ -31,10 +31,10 @@
"Created: / 26-04-2014 / 16:05:34 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
-selectedCode:something
- selectedCode := something.
+selectedCodes: something
+ selectedCodes := something.
- "Created: / 05-08-2014 / 21:26:19 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Created: / 18-08-2014 / 23:53:25 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
selectedMethodProtocols:something
@@ -70,11 +70,11 @@
"Modified (format): / 05-05-2014 / 20:25:42 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
-selectedCode
+selectedCodes
- ^ selectedCode
+ ^ selectedCodes
- "Modified: / 05-08-2014 / 21:25:57 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Created: / 18-08-2014 / 23:52:48 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
selectedMethodProtocols
--- a/CustomSubclassResponsibilityCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomSubclassResponsibilityCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -65,7 +65,7 @@
superclassMethod := (classQuery methodForSuperclassSelector: selector class: aClass).
- method := builder createMethod.
+ method := codeBuilder createMethod.
method
class: aClass;
protocol: superclassMethod category;
--- a/CustomTestCaseCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomTestCaseCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -61,7 +61,7 @@
testClassName := className, 'Tests'.
- testClass := builder createClass.
+ testClass := codeBuilder createClass.
testClass
className: testClassName;
superclassName: 'TestCase';
--- a/CustomValueHolderAccessMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomValueHolderAccessMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomValueHolderAccessMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomValueHolderAccessMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomValueHolderAccessMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomValueHolderAccessMethodsCodeGenerator new
! !
--- a/CustomValueHolderGetterMethodsCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomValueHolderGetterMethodsCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -62,7 +62,7 @@
comment := comment bindWith: aName.
].
- methodBuilder := builder methodBuilder.
+ methodBuilder := codeBuilder methodBuilder.
methodBuilder
source: '`@methodName
`"comment
--- a/CustomValueHolderGetterMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomValueHolderGetterMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomValueHolderGetterMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomValueHolderGetterMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomValueHolderGetterMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomValueHolderGetterMethodsCodeGenerator new
! !
--- a/CustomValueHolderWithChangeNotificationAccessMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomValueHolderWithChangeNotificationAccessMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomValueHolderWithChangeNotificationAccessMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomValueHolderWithChangeNotificationAccessMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomValueHolderWithChangeNotificationAccessMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomValueHolderWithChangeNotificationAccessMethodsCodeGenerator new
! !
--- a/CustomValueHolderWithChangeNotificationGetterMethodsCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomValueHolderWithChangeNotificationGetterMethodsCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -61,7 +61,7 @@
comment := comment bindWith: aName.
].
- methodBuilder := builder methodBuilder.
+ methodBuilder := codeBuilder methodBuilder.
methodBuilder
source: '`@methodName
`"comment
--- a/CustomValueHolderWithChangeNotificationGetterMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomValueHolderWithChangeNotificationGetterMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomValueHolderWithChangeNotificationGetterMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomValueHolderWithChangeNotificationGetterMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomValueHolderWithChangeNotificationGetterMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomValueHolderWithChangeNotificationGetterMethodsCodeGenerator new
! !
--- a/CustomValueHolderWithChangeNotificationSetterMethodsCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomValueHolderWithChangeNotificationSetterMethodsCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -55,7 +55,7 @@
comment := comment bindWith: aName.
].
- methodBuilder := builder methodBuilder.
+ methodBuilder := codeBuilder methodBuilder.
methodBuilder
source: '`@methodName
`"comment
--- a/CustomValueHolderWithChangeNotificationSetterMethodsCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomValueHolderWithChangeNotificationSetterMethodsCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomValueHolderWithChangeNotificationSetterMethodsCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomValueHolderWithChangeNotificationSetterMethodsCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomValueHolderWithChangeNotificationSetterMethodsCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomValueHolderWithChangeNotificationSetterMethodsCodeGenerator new
! !
--- a/CustomVisitorCodeGenerator.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomVisitorCodeGenerator.st Sun Aug 24 01:49:18 2014 +0100
@@ -81,7 +81,7 @@
methodSelector := methodSelector, parameterSelectorPart.
].
- method := builder createMethod.
+ method := codeBuilder createMethod.
method
class: aClass;
protocol: 'visiting';
--- a/CustomVisitorCodeGeneratorAcceptVisitorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomVisitorCodeGeneratorAcceptVisitorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomVisitorCodeGeneratorAcceptVisitorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomVisitorCodeGeneratorAcceptVisitorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomVisitorCodeGeneratorAcceptVisitorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomVisitorCodeGeneratorAcceptVisitor new
! !
--- a/CustomVisitorCodeGeneratorTests.st Fri Aug 22 19:09:38 2014 +0100
+++ b/CustomVisitorCodeGeneratorTests.st Sun Aug 24 01:49:18 2014 +0100
@@ -1,6 +1,6 @@
"{ Package: 'jn:refactoring_custom' }"
-CustomCodeGeneratorTestCase subclass:#CustomVisitorCodeGeneratorTests
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomVisitorCodeGeneratorTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
@@ -9,7 +9,7 @@
!CustomVisitorCodeGeneratorTests methodsFor:'accessing'!
-generator
+generatorOrRefactoring
^ CustomVisitorCodeGenerator new
! !
@@ -29,19 +29,19 @@
^ visitor visitDummyTestClassForVisitorMethod: self with:parameter'.
- class := builder createClassImmediate: 'DummyTestClassForVisitorMethod'.
+ class := codeBuilder createClassImmediate: 'DummyTestClassForVisitorMethod'.
- generator
+ generatorOrRefactoring
buildAcceptVisitorMethod: 'visitDummyTestClassForVisitorMethod:'
withParameter: true
forClass: class.
- generator builder execute.
+ generatorOrRefactoring codeBuilder execute.
self assertMethodSource: expectedSource atSelector: #acceptVisitor:with: forClass: class
"Created: / 27-07-2014 / 12:32:22 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 03-08-2014 / 22:51:44 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 00:11:00 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
test_accept_visitor_method_generated_with_comment_and_without_parameter
@@ -58,18 +58,19 @@
^ visitor visitDummyTestClassForVisitorMethod: self'.
- class := builder createClassImmediate: 'DummyTestClassForVisitorMethod'.
+ class := codeBuilder createClassImmediate: 'DummyTestClassForVisitorMethod'.
- generator
+ generatorOrRefactoring
buildAcceptVisitorMethod: 'visitDummyTestClassForVisitorMethod:'
withParameter: false
forClass: class.
- generator builder execute.
+ generatorOrRefactoring codeBuilder execute.
self assertMethodSource: expectedSource atSelector: #acceptVisitor: forClass: class
"Created: / 03-08-2014 / 22:50:06 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 00:11:14 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
test_accept_visitor_method_generated_without_comment_and_with_parameter
@@ -82,18 +83,19 @@
^ visitor visitDummyTestClassForVisitorMethod: self with:parameter'.
- class := builder createClassImmediate: 'DummyTestClassForVisitorMethod'.
+ class := codeBuilder createClassImmediate: 'DummyTestClassForVisitorMethod'.
- generator
+ generatorOrRefactoring
buildAcceptVisitorMethod: 'visitDummyTestClassForVisitorMethod:'
withParameter: true
forClass: class.
- generator builder execute.
+ generatorOrRefactoring codeBuilder execute.
self assertMethodSource: expectedSource atSelector: #acceptVisitor:with: forClass: class
"Created: / 03-08-2014 / 22:53:36 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 00:11:25 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
test_accept_visitor_method_generated_without_comment_and_without_parameter
@@ -106,17 +108,18 @@
^ visitor visitDummyTestClassForVisitorMethod: self'.
- class := builder createClassImmediate: 'DummyTestClassForVisitorMethod'.
+ class := codeBuilder createClassImmediate: 'DummyTestClassForVisitorMethod'.
- generator
+ generatorOrRefactoring
buildAcceptVisitorMethod: 'visitDummyTestClassForVisitorMethod:'
withParameter: false
forClass: class.
- generator builder execute.
+ generatorOrRefactoring codeBuilder execute.
self assertMethodSource: expectedSource atSelector: #acceptVisitor: forClass: class
"Created: / 03-08-2014 / 22:51:18 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 23-08-2014 / 00:11:32 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
--- a/Make.proto Fri Aug 22 19:09:38 2014 +0100
+++ b/Make.proto Sun Aug 24 01:49:18 2014 +0100
@@ -34,7 +34,7 @@
# add the path(es) here:,
# ********** OPTIONAL: MODIFY the next lines ***
# LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/changes -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/helpers -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic3 -I$(INCLUDE_TOP)/stx/libtool -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libview2
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/changes -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/helpers -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/refactoring -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic3 -I$(INCLUDE_TOP)/stx/libtool -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libview2
# if you need any additional defines for embedded C code,
@@ -103,6 +103,7 @@
prereq:
cd $(TOP)/libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd $(TOP)/goodies/refactoryBrowser/parser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd $(TOP)/goodies/refactoryBrowser/refactoring && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd $(TOP)/libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd $(TOP)/libbasic3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd $(TOP)/libcomp && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
@@ -140,8 +141,11 @@
$(OUTDIR)CustomManager.$(O) CustomManager.$(H): CustomManager.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)CustomMenuBuilder.$(O) CustomMenuBuilder.$(H): CustomMenuBuilder.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)CustomMock.$(O) CustomMock.$(H): CustomMock.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)CustomParseTreeRewriter.$(O) CustomParseTreeRewriter.$(H): CustomParseTreeRewriter.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/ParseTreeRewriter.$(H) $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/ParseTreeSearcher.$(H) $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBProgramNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)CustomPerspective.$(O) CustomPerspective.$(H): CustomPerspective.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)CustomRefactoryBuilder.$(O) CustomRefactoryBuilder.$(H): CustomRefactoryBuilder.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/refactoring/RefactoryBuilder.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)CustomSourceCodeBuilder.$(O) CustomSourceCodeBuilder.$(H): CustomSourceCodeBuilder.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBProgramNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libtool/CodeGenerator.$(H) $(STCHDR)
+$(OUTDIR)CustomSourceCodeSelection.$(O) CustomSourceCodeSelection.$(H): CustomSourceCodeSelection.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)TestClass.$(O) TestClass.$(H): TestClass.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)TestClass2.$(O) TestClass2.$(H): TestClass2.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)jn_refactoring_custom.$(O) jn_refactoring_custom.$(H): jn_refactoring_custom.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
@@ -155,6 +159,7 @@
$(OUTDIR)CustomCodeGenerator.$(O) CustomCodeGenerator.$(H): CustomCodeGenerator.st $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoringBase.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)CustomRefactoring.$(O) CustomRefactoring.$(H): CustomRefactoring.st $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoringBase.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)CustomAccessMethodsCodeGenerator.$(O) CustomAccessMethodsCodeGenerator.$(H): CustomAccessMethodsCodeGenerator.st $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGenerator.$(H) $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoringBase.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)CustomCodeSelectionToResourceTranslation.$(O) CustomCodeSelectionToResourceTranslation.$(H): CustomCodeSelectionToResourceTranslation.st $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)/jn/refactoring_custom/CustomRefactoring.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libtool/CodeGeneratorTool.$(H) $(STCHDR)
$(OUTDIR)CustomCodeGeneratorClassGenerator.$(O) CustomCodeGeneratorClassGenerator.$(H): CustomCodeGeneratorClassGenerator.st $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGenerator.$(H) $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoringBase.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)CustomIsAbstractCodeGenerator.$(O) CustomIsAbstractCodeGenerator.$(H): CustomIsAbstractCodeGenerator.st $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGenerator.$(H) $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoringBase.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)CustomReplaceIfNilWithIfTrueRefactoring.$(O) CustomReplaceIfNilWithIfTrueRefactoring.$(H): CustomReplaceIfNilWithIfTrueRefactoring.st $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)/jn/refactoring_custom/CustomCodeGeneratorOrRefactoringBase.$(H) $(INCLUDE_TOP)/jn/refactoring_custom/CustomRefactoring.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec Fri Aug 22 19:09:38 2014 +0100
+++ b/Make.spec Sun Aug 24 01:49:18 2014 +0100
@@ -58,8 +58,11 @@
CustomManager \
CustomMenuBuilder \
CustomMock \
+ CustomParseTreeRewriter \
CustomPerspective \
+ CustomRefactoryBuilder \
CustomSourceCodeBuilder \
+ CustomSourceCodeSelection \
TestClass \
TestClass2 \
jn_refactoring_custom \
@@ -74,6 +77,7 @@
CustomRefactoring \
CustomAccessMethodsCodeGenerator \
CustomCodeGeneratorClassGenerator \
+ CustomCodeSelectionToResourceTranslation \
CustomIsAbstractCodeGenerator \
CustomReplaceIfNilWithIfTrueRefactoring \
CustomSubclassResponsibilityCodeGenerator \
@@ -111,8 +115,11 @@
$(OUTDIR_SLASH)CustomManager.$(O) \
$(OUTDIR_SLASH)CustomMenuBuilder.$(O) \
$(OUTDIR_SLASH)CustomMock.$(O) \
+ $(OUTDIR_SLASH)CustomParseTreeRewriter.$(O) \
$(OUTDIR_SLASH)CustomPerspective.$(O) \
+ $(OUTDIR_SLASH)CustomRefactoryBuilder.$(O) \
$(OUTDIR_SLASH)CustomSourceCodeBuilder.$(O) \
+ $(OUTDIR_SLASH)CustomSourceCodeSelection.$(O) \
$(OUTDIR_SLASH)TestClass.$(O) \
$(OUTDIR_SLASH)TestClass2.$(O) \
$(OUTDIR_SLASH)jn_refactoring_custom.$(O) \
@@ -127,6 +134,7 @@
$(OUTDIR_SLASH)CustomRefactoring.$(O) \
$(OUTDIR_SLASH)CustomAccessMethodsCodeGenerator.$(O) \
$(OUTDIR_SLASH)CustomCodeGeneratorClassGenerator.$(O) \
+ $(OUTDIR_SLASH)CustomCodeSelectionToResourceTranslation.$(O) \
$(OUTDIR_SLASH)CustomIsAbstractCodeGenerator.$(O) \
$(OUTDIR_SLASH)CustomReplaceIfNilWithIfTrueRefactoring.$(O) \
$(OUTDIR_SLASH)CustomSubclassResponsibilityCodeGenerator.$(O) \
--- a/TestClass.st Fri Aug 22 19:09:38 2014 +0100
+++ b/TestClass.st Sun Aug 24 01:49:18 2014 +0100
@@ -14,63 +14,11 @@
"
!
-!TestClass methodsFor:'aspects'!
-inst
- "return/create the 'inst' value holder (automatically generated)"
-
- inst isNil ifTrue:[
- inst := ValueHolder new.
- inst addDependent:self.
- ].
- ^ inst
-!
-
-inst2
- "return/create the 'inst2' value holder (automatically generated)"
-
- inst2 isNil ifTrue:[
- inst2 := ValueHolder new.
- inst2 addDependent:self.
- ].
- ^ inst2
-!
-
-inst2:something
- "set the 'inst2' value holder (automatically generated)"
-
- |oldValue newValue|
+!TestClass class methodsFor:'documentation'!
- inst2 notNil ifTrue:[
- oldValue := inst2 value.
- inst2 removeDependent:self.
- ].
- inst2 := something.
- inst2 notNil ifTrue:[
- inst2 addDependent:self.
- ].
- newValue := inst2 value.
- oldValue ~~ newValue ifTrue:[
- self update:#value with:newValue from:inst2.
- ].
-!
+version_HG
-inst:something
- "set the 'inst' value holder (automatically generated)"
-
- |oldValue newValue|
-
- inst notNil ifTrue:[
- oldValue := inst value.
- inst removeDependent:self.
- ].
- inst := something.
- inst notNil ifTrue:[
- inst addDependent:self.
- ].
- newValue := inst value.
- oldValue ~~ newValue ifTrue:[
- self update:#value with:newValue from:inst.
- ].
+ ^ '$Changeset: <not expanded> $'
! !
--- a/abbrev.stc Fri Aug 22 19:09:38 2014 +0100
+++ b/abbrev.stc Sun Aug 24 01:49:18 2014 +0100
@@ -4,13 +4,18 @@
CustomChangeManager CustomChangeManager jn:refactoring_custom 'Interface-Refactoring-Custom' 0
CustomClassQuery CustomClassQuery jn:refactoring_custom 'Interface-Refactoring-Custom' 0
CustomCodeGeneratorOrRefactoringBase CustomCodeGeneratorOrRefactoringBase jn:refactoring_custom 'Interface-Refactoring-Custom' 0
+CustomCodeGeneratorOrRefactoringTestCase CustomCodeGeneratorOrRefactoringTestCase jn:refactoring_custom 'Interface-Refactoring-Custom-Tests' 1
+CustomCodeGeneratorOrRefactoringTestCaseTests CustomCodeGeneratorOrRefactoringTestCaseTests jn:refactoring_custom 'Interface-Refactoring-Custom-Tests' 1
CustomContext CustomContext jn:refactoring_custom 'Interface-Refactoring-Custom' 0
CustomDialog CustomDialog jn:refactoring_custom 'Interface-Refactoring-Custom' 0
CustomManager CustomManager jn:refactoring_custom 'Interface-Refactoring-Custom' 0
CustomMenuBuilder CustomMenuBuilder jn:refactoring_custom 'Interface-Refactoring-Custom-UI' 0
CustomMock CustomMock jn:refactoring_custom 'Interface-Refactoring-Custom-Tests' 0
+CustomParseTreeRewriter CustomParseTreeRewriter jn:refactoring_custom 'Interface-Refactoring-Custom' 0
CustomPerspective CustomPerspective jn:refactoring_custom 'Interface-Refactoring-Custom' 1
+CustomRefactoryBuilder CustomRefactoryBuilder jn:refactoring_custom 'Interface-Refactoring-Custom' 0
CustomSourceCodeBuilder CustomSourceCodeBuilder jn:refactoring_custom 'Interface-Refactoring-Custom' 0
+CustomSourceCodeSelection CustomSourceCodeSelection jn:refactoring_custom 'Interface-Refactoring-Custom' 0
TestClass TestClass jn:refactoring_custom 'Interface-Refactoring-Custom' 1
TestClass2 TestClass2 jn:refactoring_custom 'Interface-Refactoring-Custom' 0
jn_refactoring_custom jn_refactoring_custom jn:refactoring_custom '* Projects & Packages *' 3
@@ -76,3 +81,4 @@
CustomValueHolderWithChangeNotificationSetterMethodsCodeGeneratorTests CustomValueHolderWithChangeNotificationSetterMethodsCodeGeneratorTests jn:refactoring_custom 'Interface-Refactoring-Custom-Tests' 1
CustomVisitorCodeGeneratorAcceptVisitorTests CustomVisitorCodeGeneratorAcceptVisitorTests jn:refactoring_custom 'Interface-Refactoring-Custom-Tests' 1
CustomVisitorCodeGeneratorTests CustomVisitorCodeGeneratorTests jn:refactoring_custom 'Interface-Refactoring-Custom-Tests' 1
+CustomCodeSelectionToResourceTranslation CustomCodeSelectionToResourceTranslation jn:refactoring_custom 'Interface-Refactoring-Custom' 0
--- a/bc.mak Fri Aug 22 19:09:38 2014 +0100
+++ b/bc.mak Sun Aug 24 01:49:18 2014 +0100
@@ -34,7 +34,7 @@
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\changes -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\helpers -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic3 -I$(INCLUDE_TOP)\stx\libtool -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libview2
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\changes -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\helpers -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\refactoring -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic3 -I$(INCLUDE_TOP)\stx\libtool -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libview2
LOCALDEFINES=
STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -varPrefix=$(LIBNAME)
@@ -52,6 +52,7 @@
prereq:
pushd ..\..\stx\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\stx\goodies\refactoryBrowser\parser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\stx\goodies\refactoryBrowser\refactoring & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\stx\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\stx\libbasic3 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\stx\libcomp & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
@@ -86,8 +87,11 @@
$(OUTDIR)CustomManager.$(O) CustomManager.$(H): CustomManager.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)CustomMenuBuilder.$(O) CustomMenuBuilder.$(H): CustomMenuBuilder.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)CustomMock.$(O) CustomMock.$(H): CustomMock.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)CustomParseTreeRewriter.$(O) CustomParseTreeRewriter.$(H): CustomParseTreeRewriter.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\ParseTreeRewriter.$(H) $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\ParseTreeSearcher.$(H) $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBProgramNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)CustomPerspective.$(O) CustomPerspective.$(H): CustomPerspective.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)CustomRefactoryBuilder.$(O) CustomRefactoryBuilder.$(H): CustomRefactoryBuilder.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\refactoring\RefactoryBuilder.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)CustomSourceCodeBuilder.$(O) CustomSourceCodeBuilder.$(H): CustomSourceCodeBuilder.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBProgramNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libtool\CodeGenerator.$(H) $(STCHDR)
+$(OUTDIR)CustomSourceCodeSelection.$(O) CustomSourceCodeSelection.$(H): CustomSourceCodeSelection.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)TestClass.$(O) TestClass.$(H): TestClass.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)TestClass2.$(O) TestClass2.$(H): TestClass2.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)jn_refactoring_custom.$(O) jn_refactoring_custom.$(H): jn_refactoring_custom.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
@@ -101,6 +105,7 @@
$(OUTDIR)CustomCodeGenerator.$(O) CustomCodeGenerator.$(H): CustomCodeGenerator.st $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoringBase.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)CustomRefactoring.$(O) CustomRefactoring.$(H): CustomRefactoring.st $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoringBase.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)CustomAccessMethodsCodeGenerator.$(O) CustomAccessMethodsCodeGenerator.$(H): CustomAccessMethodsCodeGenerator.st $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGenerator.$(H) $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoringBase.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)CustomCodeSelectionToResourceTranslation.$(O) CustomCodeSelectionToResourceTranslation.$(H): CustomCodeSelectionToResourceTranslation.st $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)\jn\refactoring_custom\CustomRefactoring.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libtool\CodeGeneratorTool.$(H) $(STCHDR)
$(OUTDIR)CustomCodeGeneratorClassGenerator.$(O) CustomCodeGeneratorClassGenerator.$(H): CustomCodeGeneratorClassGenerator.st $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGenerator.$(H) $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoringBase.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)CustomIsAbstractCodeGenerator.$(O) CustomIsAbstractCodeGenerator.$(H): CustomIsAbstractCodeGenerator.st $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGenerator.$(H) $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoringBase.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)CustomReplaceIfNilWithIfTrueRefactoring.$(O) CustomReplaceIfNilWithIfTrueRefactoring.$(H): CustomReplaceIfNilWithIfTrueRefactoring.st $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoring.$(H) $(INCLUDE_TOP)\jn\refactoring_custom\CustomCodeGeneratorOrRefactoringBase.$(H) $(INCLUDE_TOP)\jn\refactoring_custom\CustomRefactoring.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/jn_refactoring_custom.st Fri Aug 22 19:09:38 2014 +0100
+++ b/jn_refactoring_custom.st Sun Aug 24 01:49:18 2014 +0100
@@ -27,7 +27,8 @@
by searching along the inheritance chain of all of my classes."
^ #(
- #'stx:goodies/refactoryBrowser/parser' "RBProgramNodeVisitor - superclass of CustomSourceCodeBuilder"
+ #'stx:goodies/refactoryBrowser/parser' "ParseTreeRewriter - superclass of CustomParseTreeRewriter"
+ #'stx:goodies/refactoryBrowser/refactoring' "RefactoryBuilder - superclass of CustomRefactoryBuilder"
#'stx:goodies/sunit' "TestAsserter - superclass of CustomAccessMethodsCodeGeneratorTests"
#'stx:libbasic' "LibraryDefinition - superclass of jn_refactoring_custom"
#'stx:libtool' "CodeGenerator - superclass of CustomSourceCodeBuilder"
@@ -43,9 +44,9 @@
by searching all classes (and their packages) which are referenced by my classes."
^ #(
- #'stx:goodies/refactoryBrowser/changes' "CompositeRefactoryChange - referenced by CustomCodeGeneratorOrRefactoringBase>>startCollectChanges"
+ #'stx:goodies/refactoryBrowser/changes' "CompositeRefactoryChange - referenced by CustomRefactoryBuilder>>change"
#'stx:goodies/refactoryBrowser/helpers' "RBNamespace - referenced by CustomSourceCodeBuilder::Class>>asRBClass"
- #'stx:libbasic3' "Change - referenced by CustomCodeGeneratorTestCase>>assertSource:sameAs:"
+ #'stx:libbasic3' "Change - referenced by CustomCodeGeneratorOrRefactoringTestCase>>assertSource:sameAs:"
#'stx:libview' "WindowGroup - referenced by CustomCodeGeneratorOrRefactoring>>executeInContextWithWaitCursor:"
)
!
@@ -73,13 +74,18 @@
CustomChangeManager
CustomClassQuery
CustomCodeGeneratorOrRefactoringBase
+ (CustomCodeGeneratorOrRefactoringTestCase autoload)
+ (CustomCodeGeneratorOrRefactoringTestCaseTests autoload)
CustomContext
CustomDialog
CustomManager
CustomMenuBuilder
CustomMock
+ CustomParseTreeRewriter
CustomPerspective
+ CustomRefactoryBuilder
CustomSourceCodeBuilder
+ CustomSourceCodeSelection
TestClass
TestClass2
#'jn_refactoring_custom'
@@ -94,6 +100,7 @@
CustomRefactoring
CustomAccessMethodsCodeGenerator
CustomCodeGeneratorClassGenerator
+ CustomCodeSelectionToResourceTranslation
CustomIsAbstractCodeGenerator
CustomReplaceIfNilWithIfTrueRefactoring
CustomSubclassResponsibilityCodeGenerator
--- a/libInit.cc Fri Aug 22 19:09:38 2014 +0100
+++ b/libInit.cc Sun Aug 24 01:49:18 2014 +0100
@@ -35,8 +35,11 @@
_CustomManager_Init(pass,__pRT__,snd);
_CustomMenuBuilder_Init(pass,__pRT__,snd);
_CustomMock_Init(pass,__pRT__,snd);
+_CustomParseTreeRewriter_Init(pass,__pRT__,snd);
_CustomPerspective_Init(pass,__pRT__,snd);
+_CustomRefactoryBuilder_Init(pass,__pRT__,snd);
_CustomSourceCodeBuilder_Init(pass,__pRT__,snd);
+_CustomSourceCodeSelection_Init(pass,__pRT__,snd);
_TestClass_Init(pass,__pRT__,snd);
_TestClass2_Init(pass,__pRT__,snd);
_jn_137refactoring_137custom_Init(pass,__pRT__,snd);
@@ -51,6 +54,7 @@
_CustomRefactoring_Init(pass,__pRT__,snd);
_CustomAccessMethodsCodeGenerator_Init(pass,__pRT__,snd);
_CustomCodeGeneratorClassGenerator_Init(pass,__pRT__,snd);
+_CustomCodeSelectionToResourceTranslation_Init(pass,__pRT__,snd);
_CustomIsAbstractCodeGenerator_Init(pass,__pRT__,snd);
_CustomReplaceIfNilWithIfTrueRefactoring_Init(pass,__pRT__,snd);
_CustomSubclassResponsibilityCodeGenerator_Init(pass,__pRT__,snd);
--- a/refactoring_custom.rc Fri Aug 22 19:09:38 2014 +0100
+++ b/refactoring_custom.rc Sun Aug 24 01:49:18 2014 +0100
@@ -4,7 +4,7 @@
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 6,2,32767,32767
- PRODUCTVERSION 6,2,4,0
+ PRODUCTVERSION 6,2,4,1326
#if (__BORLANDC__)
FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE
FILEFLAGS VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
@@ -24,8 +24,8 @@
VALUE "InternalName", "jn:refactoring_custom\0"
VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
VALUE "ProductName", "ProductName\0"
- VALUE "ProductVersion", "6.2.4.0\0"
- VALUE "ProductDate", "Fri, 22 Aug 2014 18:08:30 GMT\0"
+ VALUE "ProductVersion", "6.2.4.1326\0"
+ VALUE "ProductDate", "Sat, 23 Aug 2014 14:35:48 GMT\0"
END
END