refactoring_custom/SmallSense__CustomRefactoryBuilder.st
author convert-repo
Wed, 11 Dec 2019 04:28:36 +0000
changeset 1116 b51ace366efc
parent 1072 a44c741ee5ef
permissions -rw-r--r--
update tags
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
828
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
     1
"
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
     2
A custom code generation and refactoring support for Smalltalk/X
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
     3
Copyright (C) 2013-2015 Jakub Nesveda
1072
a44c741ee5ef Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 833
diff changeset
     4
Copyright (C) 2015 Jan Vrany
828
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
     5
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
     6
This library is free software; you can redistribute it and/or
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
     7
modify it under the terms of the GNU Lesser General Public
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
     8
License as published by the Free Software Foundation; either
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
     9
version 2.1 of the License.
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    10
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    11
This library is distributed in the hope that it will be useful,
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    12
but WITHOUT ANY WARRANTY; without even the implied warranty of
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    14
Lesser General Public License for more details.
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    15
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    16
You should have received a copy of the GNU Lesser General Public
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    17
License along with this library; if not, write to the Free Software
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    18
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    19
"
833
297eb38e4eee Package jn:refactoring_custom renamed to stx:goodies/smallsense/refactoring_custom
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 830
diff changeset
    20
"{ Package: 'stx:goodies/smallsense/refactoring_custom' }"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    21
830
1a88f5e65fe2 Classes moved to namespace SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 828
diff changeset
    22
"{ NameSpace: SmallSense }"
803
95cdac772759 Fixed failing tests caused by new STX release
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 797
diff changeset
    23
773
d255aceb7349 better use method call from model (RBNamespace) to modify methods instead of directly creating change object and adding it into the change collector
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 754
diff changeset
    24
Object subclass:#CustomRefactoryBuilder
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
    25
	instanceVariableNames:'changeManager formatter model rewritterClass searcherClass
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
    26
		parserClass'
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    27
	classVariableNames:''
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    28
	poolDictionaries:''
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    29
	category:'Interface-Refactoring-Custom'
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    30
!
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    31
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    32
CustomRefactoryBuilder subclass:#ClassCategorySearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    33
	instanceVariableNames:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    34
	classVariableNames:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    35
	poolDictionaries:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    36
	privateIn:CustomRefactoryBuilder
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    37
!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    38
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    39
CustomRefactoryBuilder subclass:#ClassSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    40
	instanceVariableNames:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    41
	classVariableNames:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    42
	poolDictionaries:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    43
	privateIn:CustomRefactoryBuilder
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    44
!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    45
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    46
CustomRefactoryBuilder subclass:#CodeSelectionSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    47
	instanceVariableNames:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    48
	classVariableNames:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    49
	poolDictionaries:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    50
	privateIn:CustomRefactoryBuilder
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    51
!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    52
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    53
CustomRefactoryBuilder subclass:#MethodSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    54
	instanceVariableNames:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    55
	classVariableNames:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    56
	poolDictionaries:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    57
	privateIn:CustomRefactoryBuilder
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    58
!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    59
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    60
CustomRefactoryBuilder subclass:#PackageSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    61
	instanceVariableNames:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    62
	classVariableNames:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    63
	poolDictionaries:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    64
	privateIn:CustomRefactoryBuilder
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    65
!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    66
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    67
CustomRefactoryBuilder subclass:#ProtocolSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    68
	instanceVariableNames:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    69
	classVariableNames:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    70
	poolDictionaries:''
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    71
	privateIn:CustomRefactoryBuilder
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    72
!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
    73
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    74
!CustomRefactoryBuilder class methodsFor:'documentation'!
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    75
828
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    76
copyright
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    77
"
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    78
A custom code generation and refactoring support for Smalltalk/X
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    79
Copyright (C) 2013-2015 Jakub Nesveda
1072
a44c741ee5ef Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 833
diff changeset
    80
Copyright (C) 2015 Jan Vrany
828
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    81
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    82
This library is free software; you can redistribute it and/or
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    83
modify it under the terms of the GNU Lesser General Public
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    84
License as published by the Free Software Foundation; either
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    85
version 2.1 of the License.
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    86
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    87
This library is distributed in the hope that it will be useful,
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    88
but WITHOUT ANY WARRANTY; without even the implied warranty of
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    89
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    90
Lesser General Public License for more details.
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    91
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    92
You should have received a copy of the GNU Lesser General Public
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    93
License along with this library; if not, write to the Free Software
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    94
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    95
"
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    96
!
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 812
diff changeset
    97
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    98
documentation
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    99
"
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   100
    Encapsulates performing refactoring changes on the source code within single object. 
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   101
    Single refactorings are stored as change objects which represens changes in the source code.
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   102
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   103
    [author:]
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   104
        Jakub Nesveda <nesvejak@fit.cvut.cz> 
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   105
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   106
"
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   107
! !
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   108
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   109
!CustomRefactoryBuilder class methodsFor:'instance creation'!
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   110
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   111
new
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   112
    "return an initialized instance"
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   113
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   114
    ^ self basicNew initialize.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   115
! !
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   116
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   117
!CustomRefactoryBuilder methodsFor:'accessing'!
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   118
634
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 632
diff changeset
   119
changeManager
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 632
diff changeset
   120
    ^ changeManager
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 632
diff changeset
   121
!
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 632
diff changeset
   122
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 632
diff changeset
   123
changeManager:something
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 632
diff changeset
   124
    changeManager := something.
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 632
diff changeset
   125
!
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 632
diff changeset
   126
664
0d03c842fcb4 add default class initializiation to CustomSourceCodeBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 652
diff changeset
   127
formatter
0d03c842fcb4 add default class initializiation to CustomSourceCodeBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 652
diff changeset
   128
    ^ formatter
0d03c842fcb4 add default class initializiation to CustomSourceCodeBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 652
diff changeset
   129
!
0d03c842fcb4 add default class initializiation to CustomSourceCodeBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 652
diff changeset
   130
0d03c842fcb4 add default class initializiation to CustomSourceCodeBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 652
diff changeset
   131
formatter: aFormatter
0d03c842fcb4 add default class initializiation to CustomSourceCodeBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 652
diff changeset
   132
    formatter := aFormatter.
0d03c842fcb4 add default class initializiation to CustomSourceCodeBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 652
diff changeset
   133
0d03c842fcb4 add default class initializiation to CustomSourceCodeBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 652
diff changeset
   134
    "Modified (format): / 31-08-2014 / 17:12:26 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
0d03c842fcb4 add default class initializiation to CustomSourceCodeBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 652
diff changeset
   135
!
0d03c842fcb4 add default class initializiation to CustomSourceCodeBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 652
diff changeset
   136
706
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   137
model
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   138
    ^ model
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   139
!
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   140
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   141
model:something
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   142
    model := something.
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   143
!
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   144
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   145
parser
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   146
    "Returns prepared source code parser"
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   147
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   148
    ^ parserClass
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   149
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   150
    "Created: / 24-08-2014 / 23:36:55 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   151
    "Modified: / 10-12-2014 / 22:02:28 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   152
!
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   153
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   154
parserClass
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   155
    "Returns a class used to parse the source code (i.e. RBParser)"
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   156
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   157
    ^ parserClass
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   158
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   159
    "Modified (comment): / 10-12-2014 / 22:01:03 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   160
!
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   161
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   162
parserClass: aClass
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   163
    "see parserClass"
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   164
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   165
    parserClass := aClass
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   166
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   167
    "Modified (comment): / 10-12-2014 / 21:59:20 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   168
!
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   169
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   170
rewritterClass
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   171
    "Returns a class used for rewriting the source code.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   172
    For example CustomParseTreeRewriter."
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   173
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   174
    ^ rewritterClass
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   175
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   176
    "Modified (comment): / 10-12-2014 / 21:16:22 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   177
!
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   178
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   179
rewritterClass: aClass
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   180
    "see rewritterClass"
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   181
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   182
    rewritterClass := aClass.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   183
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   184
    "Modified (comment): / 10-12-2014 / 21:16:51 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   185
!
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   186
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   187
searcher
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   188
    "Returns prepared source code searcher"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   189
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   190
    ^ searcherClass new
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   191
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   192
    "Created: / 16-08-2014 / 22:13:25 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   193
    "Modified: / 10-12-2014 / 22:03:07 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   194
!
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   195
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   196
searcherClass
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   197
    "Returns a class used to search on the source code (i.e. ParseTreeSearcher)"
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   198
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   199
    ^ searcherClass
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   200
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   201
    "Modified (comment): / 10-12-2014 / 22:00:46 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   202
!
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   203
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   204
searcherClass:something
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   205
    searcherClass := something.
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   206
! !
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   207
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   208
!CustomRefactoryBuilder methodsFor:'compiling'!
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   209
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   210
execute
704
340954b48789 better comment in CustomNamespace >> execute
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 664
diff changeset
   211
    "Performs code changes ( add method, add class, rename class... )
340954b48789 better comment in CustomNamespace >> execute
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 664
diff changeset
   212
    so they take in effect ( method is added, class is renamed, ... )
340954b48789 better comment in CustomNamespace >> execute
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 664
diff changeset
   213
    with respect to current change manager implementatin - see CustomChangeManager subclasses."
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   214
752
516a6334136c added poor mans private classes support in AddClassChange
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 732
diff changeset
   215
    model execute
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   216
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   217
    "Created: / 15-08-2014 / 00:45:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
752
516a6334136c added poor mans private classes support in AddClassChange
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 732
diff changeset
   218
    "Modified: / 16-11-2014 / 17:42:32 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   219
!
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   220
705
1eb0878dc85c rename undoChanges to redoChanges, because it actually does undo, in CustomLocalChangeManager, CustomNamespace, CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 704
diff changeset
   221
undoChanges
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   222
    "redo all changes made by execute method"
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   223
752
516a6334136c added poor mans private classes support in AddClassChange
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 732
diff changeset
   224
    model undoChanges
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   225
705
1eb0878dc85c rename undoChanges to redoChanges, because it actually does undo, in CustomLocalChangeManager, CustomNamespace, CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 704
diff changeset
   226
    "Created: / 19-10-2014 / 14:57:49 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
752
516a6334136c added poor mans private classes support in AddClassChange
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 732
diff changeset
   227
    "Modified: / 16-11-2014 / 17:42:55 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   228
! !
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   229
781
07c16cc3cf55 Same method protocol name (initialization) for initialize method
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 780
diff changeset
   230
!CustomRefactoryBuilder methodsFor:'initialization'!
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   231
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   232
initialize
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   233
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   234
    super initialize.
706
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   235
    model := CustomNamespace new.
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   236
    rewritterClass := CustomParseTreeRewriter.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   237
    searcherClass := ParseTreeSearcher.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   238
    parserClass := RBParser.
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   239
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   240
    "Created: / 15-08-2014 / 00:42:39 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   241
    "Modified: / 10-12-2014 / 22:04:12 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   242
! !
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   243
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   244
!CustomRefactoryBuilder methodsFor:'parsing'!
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   245
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   246
parse: aSourceCode codeSelection: aCodeSelection
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   247
    "Retuns a parse tree from given source code string
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   248
    depending on what is selected within a method."
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   249
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   250
    aCodeSelection isWholeMethodSelected ifTrue: [ 
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   251
        ^ self parseMethod: aSourceCode  
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   252
    ].
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   253
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   254
    ^ self parseExpression: aSourceCode
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   255
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   256
    "Created: / 10-12-2014 / 21:40:14 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   257
!
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   258
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   259
parseExpression: aSourceCode
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   260
    "Helper for retrieving parse tree from source code string.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   261
    Assume thats expression and if parsing fails then try method parsing."
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   262
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   263
    ^ self parser parseExpression: aSourceCode onError: [ :string :pos |
812
8b0a808cefa9 Fixed failed tests in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   264
        self parser parseRewriteMethod: aSourceCode onError: [ :string :pos |
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   265
            self error: 'Could not parse ', string, ' at pos ', pos asString
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   266
        ]
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   267
    ]
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   268
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   269
    "Created: / 25-08-2014 / 22:34:49 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
812
8b0a808cefa9 Fixed failed tests in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   270
    "Modified: / 05-02-2015 / 21:55:08 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   271
!
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   272
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   273
parseMethod: aSourceCode
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   274
    "Helper for retrieving parse tree from source code string.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   275
    Assume thats method and if parsing fails then try expression parsing."
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   276
812
8b0a808cefa9 Fixed failed tests in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   277
    ^ self parser parseRewriteMethod: aSourceCode onError: [ :string :pos |
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   278
        self parser parseExpression: aSourceCode onError: [ :string :pos |
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   279
            self error: 'Could not parse ', string, ' at pos ', pos asString
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   280
        ]
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   281
    ]
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   282
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   283
    "Created: / 25-08-2014 / 22:35:32 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
812
8b0a808cefa9 Fixed failed tests in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   284
    "Modified: / 05-02-2015 / 21:55:23 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   285
! !
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   286
732
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   287
!CustomRefactoryBuilder methodsFor:'refactory - changes'!
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   288
732
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   289
changeCategoryOf: aClass to: aCategory
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   290
    "Changes class category to the given one in given class"
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   291
    | change |
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   292
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   293
    (self model classFor: aClass) category: aCategory.
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   294
732
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   295
    change := (self initializeChange: RefactoryClassCategoryChange)
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   296
        changeClass: aClass;
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   297
        category: aCategory;
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   298
        yourself.
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   299
752
516a6334136c added poor mans private classes support in AddClassChange
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 732
diff changeset
   300
    model changes addChange: change
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   301
732
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   302
    "Created: / 08-11-2014 / 13:40:51 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
752
516a6334136c added poor mans private classes support in AddClassChange
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 732
diff changeset
   303
    "Modified: / 16-11-2014 / 17:35:52 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
732
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   304
!
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   305
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   306
executeReplace: searchPattern with: rewritePattern inCodeSelection: aCodeSelection
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   307
    "Performs replacement on some code selection within method source code.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   308
    Firstly the search and relace is limited just to some selection 
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   309
    (i.e. some expression, but whole method can be selected)
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   310
    and then is this new code inserted in the method source code."
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   311
    | parseTree foundMatch rewriter selectedCode |
650
7514c13d6dd8 working refactoring CustomCodeSelectionToResourceTranslation - wraps code selection in code editor (codeView) to translation call, finished code selection search/replace API in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 645
diff changeset
   312
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   313
    selectedCode := aCodeSelection selectedSourceCode.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   314
    parseTree := self parse: selectedCode codeSelection: aCodeSelection.
650
7514c13d6dd8 working refactoring CustomCodeSelectionToResourceTranslation - wraps code selection in code editor (codeView) to translation call, finished code selection search/replace API in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 645
diff changeset
   315
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   316
    rewriter := rewritterClass new
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   317
        oldSource: aCodeSelection selectedSourceCode;  
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   318
        replace: searchPattern with: rewritePattern;
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   319
        yourself.
704
340954b48789 better comment in CustomNamespace >> execute
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 664
diff changeset
   320
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   321
    foundMatch := rewriter executeTree: parseTree.
704
340954b48789 better comment in CustomNamespace >> execute
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 664
diff changeset
   322
773
d255aceb7349 better use method call from model (RBNamespace) to modify methods instead of directly creating change object and adding it into the change collector
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 754
diff changeset
   323
    foundMatch ifTrue: [
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   324
        | change newSource newParseTree |
773
d255aceb7349 better use method call from model (RBNamespace) to modify methods instead of directly creating change object and adding it into the change collector
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 754
diff changeset
   325
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   326
        newSource := rewriter tree newSource.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   327
        newParseTree := self parse: newSource codeSelection: aCodeSelection.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   328
        newSource := formatter formatParseTree: newParseTree.
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   329
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   330
        aCodeSelection selectedInterval notNil ifTrue: [
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   331
            rewriter := rewritterClass new.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   332
            foundMatch := rewriter
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   333
                replace: selectedCode with: newSource when: [ :aNode | 
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   334
                    aNode intersectsInterval: aCodeSelection selectedInterval 
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   335
                ];
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   336
                executeTree: (self parseMethod: aCodeSelection currentSourceCode).
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   337
777
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   338
            newSource := rewriter newSource.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   339
        ].
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   340
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   341
        (foundMatch and: [ newSource notNil ]) ifTrue: [   
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   342
            change := model
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   343
                compile: newSource
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   344
                in: aCodeSelection selectedMethod mclass 
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   345
                classified: aCodeSelection selectedMethod category.
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   346
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   347
            change package: aCodeSelection selectedMethod package
8f212cf1bb45 Improvemens in CustomRefactoryBuilder - no complete reformatting of method source code, but only the replacement parts
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 773
diff changeset
   348
        ]
704
340954b48789 better comment in CustomNamespace >> execute
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 664
diff changeset
   349
    ].
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   350
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   351
    "Created: / 24-08-2014 / 10:24:52 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
812
8b0a808cefa9 Fixed failed tests in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   352
    "Modified: / 05-02-2015 / 21:57:49 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   353
!
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   354
732
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   355
initializeChange: aChangeClass
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   356
    "Returns new initialized instance of a code change like AddClassChange"
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   357
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   358
    ^ aChangeClass new
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   359
        model: self model;
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   360
        yourself
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   361
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   362
    "Created: / 08-11-2014 / 16:10:46 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   363
!
b7b75ad428ef add helper to change class category in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 727
diff changeset
   364
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   365
replace: searchPattern with: rewritePattern inContext: aCustomContext
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   366
    "Searches for given pattern in methods source code or selected code fragments
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   367
    and if source code matches then executes replacement"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   368
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   369
    self 
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   370
        search: searchPattern 
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   371
        inContext: aCustomContext 
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   372
        withResultDo: [ :sourceSelection |
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   373
            self executeReplace: searchPattern with: rewritePattern inCodeSelection: sourceSelection 
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   374
        ]
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   375
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   376
    "Created: / 16-08-2014 / 19:15:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   377
    "Modified: / 05-11-2014 / 22:14:15 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   378
! !
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   379
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   380
!CustomRefactoryBuilder methodsFor:'searching - instance creation'!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   381
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   382
classCategorySearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   383
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   384
    ^ self initializeSearcher: ClassCategorySearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   385
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   386
    "Created: / 04-11-2014 / 18:47:42 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   387
!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   388
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   389
classSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   390
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   391
    ^ self initializeSearcher: ClassSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   392
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   393
    "Created: / 04-11-2014 / 21:43:47 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   394
!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   395
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   396
codeSelectionSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   397
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   398
    ^ self initializeSearcher: CodeSelectionSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   399
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   400
    "Created: / 04-11-2014 / 22:36:42 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   401
!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   402
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   403
initializeSearcher: searcherClass
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   404
    "Returns new searcher with prepared instance variables."
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   405
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   406
    ^ searcherClass new
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   407
        model: model;
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   408
        yourself
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   409
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   410
    "Created: / 03-11-2014 / 09:45:35 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   411
!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   412
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   413
methodSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   414
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   415
    ^ self initializeSearcher: MethodSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   416
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   417
    "Created: / 04-11-2014 / 22:32:46 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   418
!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   419
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   420
packageSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   421
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   422
    ^ self initializeSearcher: PackageSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   423
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   424
    "Created: / 01-11-2014 / 19:52:17 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   425
    "Modified: / 03-11-2014 / 09:46:01 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   426
!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   427
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   428
protocolSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   429
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   430
    ^ self initializeSearcher: ProtocolSearcher
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   431
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   432
    "Created: / 01-11-2014 / 15:56:37 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   433
    "Modified: / 03-11-2014 / 09:46:17 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   434
! !
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   435
706
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   436
!CustomRefactoryBuilder methodsFor:'searching - methods'!
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   437
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   438
search: searchPattern inContext: aCustomContext withResultDo: aBlock
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   439
    "Searches for source code pattern in whole context which contains code, methods, classes...
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   440
    and when context is from browser then restrict search within its perspective (CustomPerspective)."
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   441
    | perspective |
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   442
780
c45cc4cd91f0 Move perspective variable to CustomContext to be sure that every subclass implements it
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 777
diff changeset
   443
    perspective := aCustomContext perspective.
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   444
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   445
    self class privateClassesDo: [ :class |
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   446
        (class includesSelector: #search:inContext:withResultDo:) ifTrue: [ 
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   447
            (perspective isNil or: [ class availableInPerspective: perspective ]) ifTrue: [ 
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   448
                | searcher |
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   449
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   450
                searcher := self initializeSearcher: class.
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   451
                searcher search: searchPattern inContext: aCustomContext withResultDo: aBlock    
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   452
            ]
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   453
        ]
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   454
    ]
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   455
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   456
    "Created: / 17-08-2014 / 16:21:24 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   457
    "Modified (comment): / 05-11-2014 / 20:33:29 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
780
c45cc4cd91f0 Move perspective variable to CustomContext to be sure that every subclass implements it
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 777
diff changeset
   458
    "Modified: / 24-12-2014 / 22:41:52 / root"
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   459
! !
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   460
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   461
!CustomRefactoryBuilder::ClassCategorySearcher class methodsFor:'queries'!
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   462
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   463
availableInPerspective:aCustomPerspective
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   464
    "see CustomRefactoryBuilder::ProtocolSearcher >> availableInPerspective:"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   465
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   466
    ^ aCustomPerspective isClassCategoryPerspective
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   467
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   468
    "Created: / 04-11-2014 / 18:44:20 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   469
! !
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   470
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   471
!CustomRefactoryBuilder::ClassCategorySearcher methodsFor:'searching - methods'!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   472
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   473
search: searchPattern inContext: aCustomContext withResultDo: aBlock
709
ca5f9d3adc15 work in progress - better documentation for CustomRefactoryBuilder and full implementation of the proposed API
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 706
diff changeset
   474
    "Iterates through all classes to find out which belongs to given categories and
706
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   475
    executes search on those classes for methods matching given searchPattern."
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   476
    | categories classSearcher |
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   477
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   478
    categories := aCustomContext selectedClassCategories.
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   479
    categories isEmptyOrNil ifTrue: [
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   480
        "Skip search when none categories are selected.
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   481
        The algorithm would iterate through all classes so this is an optimization."
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   482
        ^ self
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   483
    ].
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   484
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   485
    classSearcher := self classSearcher.
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   486
706
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   487
    model allClassesDo: [ :class |
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   488
        "Including only non metaclasses, because search in class
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   489
        searches both class and metaclass."
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   490
        (class isMeta not and: [categories includes: class category]) ifTrue: [ 
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   491
            classSearcher search: searchPattern inClass: class withResultDo: aBlock 
706
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   492
        ]
ee83e8c20350 make shared changeManeger and formatter for model and refactoryBuilder\ncompleted implementation search in class categories in refactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 705
diff changeset
   493
    ]
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   494
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   495
    "Created: / 04-11-2014 / 18:42:47 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   496
    "Modified: / 05-11-2014 / 20:55:54 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   497
! !
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   498
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   499
!CustomRefactoryBuilder::ClassSearcher class methodsFor:'queries'!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   500
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   501
availableInPerspective:aCustomPerspective
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   502
    "see CustomRefactoryBuilder::ProtocolSearcher >> availableInPerspective:"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   503
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   504
    ^ aCustomPerspective isClassPerspective
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   505
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   506
    "Created: / 04-11-2014 / 21:39:47 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   507
! !
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   508
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   509
!CustomRefactoryBuilder::ClassSearcher methodsFor:'searching - methods'!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   510
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   511
search: searchPattern inClass: aClass withResultDo: aBlock
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   512
    "Searches through all methods from given class and metaclass."
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   513
    | methodSearcher |
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   514
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   515
    methodSearcher := self methodSearcher.
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   516
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   517
    aClass instAndClassMethodsDo: [ :method |
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   518
        methodSearcher search: searchPattern inMethod: method withResultDo: aBlock
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   519
    ]
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   520
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   521
    "Created: / 17-08-2014 / 13:15:03 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   522
    "Modified: / 05-11-2014 / 20:57:11 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   523
!
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   524
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   525
search: searchPattern inContext: aCustomContext withResultDo: aBlock
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   526
    "Executes search on each class in selected class collection.
709
ca5f9d3adc15 work in progress - better documentation for CustomRefactoryBuilder and full implementation of the proposed API
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 706
diff changeset
   527
    see search:inClass:withResultDo:"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   528
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   529
    aCustomContext selectedClasses ? #() do:[ :class | 
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   530
        self search: searchPattern inClass: class withResultDo: aBlock
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   531
    ].
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   532
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   533
    "Created: / 04-11-2014 / 21:45:51 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   534
! !
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   535
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   536
!CustomRefactoryBuilder::CodeSelectionSearcher class methodsFor:'queries'!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   537
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   538
availableInPerspective:aCustomPerspective
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   539
    "see CustomRefactoryBuilder::ProtocolSearcher >> availableInPerspective:"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   540
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   541
    ^ aCustomPerspective isCodeViewPerspective
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   542
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   543
    "Created: / 04-11-2014 / 22:28:02 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   544
! !
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   545
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   546
!CustomRefactoryBuilder::CodeSelectionSearcher methodsFor:'searching - methods'!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   547
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   548
search: searchPattern inContext: aCustomContext withResultDo: aBlock
709
ca5f9d3adc15 work in progress - better documentation for CustomRefactoryBuilder and full implementation of the proposed API
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 706
diff changeset
   549
    "Searches for each selected code fragment (see CustomSourceCodeSelection)
ca5f9d3adc15 work in progress - better documentation for CustomRefactoryBuilder and full implementation of the proposed API
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 706
diff changeset
   550
    which matches given search pattern.
ca5f9d3adc15 work in progress - better documentation for CustomRefactoryBuilder and full implementation of the proposed API
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 706
diff changeset
   551
    If match is found then code selection is passed in a block."
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   552
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   553
    aCustomContext selectedCodes ? #() do:[ :codeSelection | 
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   554
        | parseTree selectedCode |
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   555
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   556
        selectedCode := codeSelection selectedSourceCode.
797
7a2ee5cc3212 Fixed error on empty code selection in CustomRefactoryBuilder::CodeSelectionSearcher
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 781
diff changeset
   557
        selectedCode notEmptyOrNil ifTrue: [   
7a2ee5cc3212 Fixed error on empty code selection in CustomRefactoryBuilder::CodeSelectionSearcher
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 781
diff changeset
   558
            parseTree := self parseExpression: selectedCode.
709
ca5f9d3adc15 work in progress - better documentation for CustomRefactoryBuilder and full implementation of the proposed API
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 706
diff changeset
   559
797
7a2ee5cc3212 Fixed error on empty code selection in CustomRefactoryBuilder::CodeSelectionSearcher
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 781
diff changeset
   560
            (self searcher)
7a2ee5cc3212 Fixed error on empty code selection in CustomRefactoryBuilder::CodeSelectionSearcher
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 781
diff changeset
   561
                matches: searchPattern do: [ :aNode :answer |
7a2ee5cc3212 Fixed error on empty code selection in CustomRefactoryBuilder::CodeSelectionSearcher
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 781
diff changeset
   562
                    aBlock value: codeSelection  
7a2ee5cc3212 Fixed error on empty code selection in CustomRefactoryBuilder::CodeSelectionSearcher
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 781
diff changeset
   563
                ];
7a2ee5cc3212 Fixed error on empty code selection in CustomRefactoryBuilder::CodeSelectionSearcher
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 781
diff changeset
   564
                executeTree: parseTree
7a2ee5cc3212 Fixed error on empty code selection in CustomRefactoryBuilder::CodeSelectionSearcher
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 781
diff changeset
   565
        ]
645
38a38c28ddb1 work in progress - create selection replace API in CustomRefactoryBuilder and CustomCodeSelectionToResourceTranslation
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 634
diff changeset
   566
    ].
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   567
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   568
    "Created: / 04-11-2014 / 22:26:21 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
797
7a2ee5cc3212 Fixed error on empty code selection in CustomRefactoryBuilder::CodeSelectionSearcher
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 781
diff changeset
   569
    "Modified: / 04-01-2015 / 16:15:05 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   570
! !
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   571
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   572
!CustomRefactoryBuilder::MethodSearcher class methodsFor:'queries'!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   573
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   574
availableInPerspective:aCustomPerspective
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   575
    "see CustomRefactoryBuilder::ProtocolSearcher >> availableInPerspective:"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   576
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   577
    ^ aCustomPerspective isMethodPerspective
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   578
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   579
    "Created: / 04-11-2014 / 22:29:57 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   580
! !
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   581
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   582
!CustomRefactoryBuilder::MethodSearcher methodsFor:'searching - methods'!
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   583
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   584
search: searchPattern inContext: aCustomContext withResultDo: aBlock
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   585
    "Searches all selected methods and executes given block when match is found."
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   586
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   587
    aCustomContext selectedMethods ? #() do: [ :method | 
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   588
        self search: searchPattern inMethod: method withResultDo: aBlock
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   589
    ].
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   590
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   591
    "Created: / 04-11-2014 / 22:24:23 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   592
!
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   593
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   594
search: searchPattern inMethod: aMethod withResultDo: aBlock
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   595
    | parseTree |
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   596
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   597
    parseTree := aMethod parseTree.    
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   598
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   599
    parseTree isNil ifTrue: [ 
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   600
        self error: 'Cannot retrieve parseTree for method: ', aMethod asString.
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   601
    ]
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   602
    ifFalse: [
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   603
        (self searcher)
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   604
            matches: searchPattern do: [ :aNode :answer |
712
3ede18c143a2 change the result to be CustomSourceCodeSelection instead of Method/RBMethod in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 709
diff changeset
   605
                | selectedCodeResult |
3ede18c143a2 change the result to be CustomSourceCodeSelection instead of Method/RBMethod in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 709
diff changeset
   606
3ede18c143a2 change the result to be CustomSourceCodeSelection instead of Method/RBMethod in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 709
diff changeset
   607
                selectedCodeResult := CustomSourceCodeSelection new
3ede18c143a2 change the result to be CustomSourceCodeSelection instead of Method/RBMethod in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 709
diff changeset
   608
                    selectedMethod: aMethod;  
3ede18c143a2 change the result to be CustomSourceCodeSelection instead of Method/RBMethod in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 709
diff changeset
   609
                    yourself.
3ede18c143a2 change the result to be CustomSourceCodeSelection instead of Method/RBMethod in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 709
diff changeset
   610
3ede18c143a2 change the result to be CustomSourceCodeSelection instead of Method/RBMethod in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 709
diff changeset
   611
                aBlock value: selectedCodeResult  
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   612
            ];
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   613
            executeTree: parseTree
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   614
    ].
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   615
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   616
    "Created: / 16-08-2014 / 22:27:35 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
712
3ede18c143a2 change the result to be CustomSourceCodeSelection instead of Method/RBMethod in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 709
diff changeset
   617
    "Modified: / 28-10-2014 / 09:45:39 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   618
! !
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   619
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   620
!CustomRefactoryBuilder::PackageSearcher class methodsFor:'queries'!
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   621
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   622
availableInPerspective:aCustomPerspective
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   623
    "see CustomRefactoryBuilder::ProtocolSearcher >> availableInPerspective:"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   624
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   625
    ^ aCustomPerspective isPackagePerspective
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   626
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   627
    "Created: / 01-11-2014 / 16:46:15 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   628
! !
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   629
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   630
!CustomRefactoryBuilder::PackageSearcher methodsFor:'searching - methods'!
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   631
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   632
search: searchPattern inContext: aCustomContext withResultDo: aBlock
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   633
    "Executes search on each method which belongs to selected packages.
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   634
    see search:inMethod:withResultDo:"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   635
    | packages methodSearcher |
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   636
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   637
    packages := aCustomContext selectedPackages.
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   638
    packages isEmptyOrNil ifTrue: [
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   639
        "Skip search when none packages are selected.
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   640
        The algorithm would iterate through all classes so this is an optimization."
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   641
        ^ self
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   642
    ].
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   643
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   644
    methodSearcher := self methodSearcher.
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   645
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   646
    model allClassesDo: [ :class |
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   647
        "Including only non metaclasses, because we use instAndClassMethodsDo:
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   648
        and allClassesDo: have different implementations."
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   649
        class isMeta ifFalse: [
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   650
            class instAndClassMethodsDo: [ :method |
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   651
                (packages includes: method package) ifTrue: [ 
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   652
                    methodSearcher search: searchPattern inMethod: method withResultDo: aBlock 
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   653
                ]
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   654
            ]
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   655
        ]
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   656
    ]
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   657
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   658
    "Created: / 01-11-2014 / 17:28:39 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   659
    "Modified: / 05-11-2014 / 20:59:53 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   660
! !
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   661
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   662
!CustomRefactoryBuilder::ProtocolSearcher class methodsFor:'queries'!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   663
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   664
availableInPerspective:aCustomPerspective
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   665
    "Returns true when perspective is desired type.
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   666
    We need to limit the searching with respect to perspective,
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   667
    because we need to search for example only in classes when we are in the class perspective
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   668
    (the list of classes in the IDE - Tools::NewSystemBrowser)."
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   669
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   670
    ^ aCustomPerspective isProtocolPerspective
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   671
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   672
    "Created: / 29-10-2014 / 22:51:57 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   673
! !
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   674
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   675
!CustomRefactoryBuilder::ProtocolSearcher methodsFor:'searching - methods'!
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   676
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   677
search: searchPattern inContext: aCustomContext withResultDo: aBlock
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   678
    "Executes search on each method in selected protocols within selected classes.
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   679
    see search:inMethod:withResultDo:"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   680
    | methodSearcher |
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   681
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   682
    methodSearcher := self methodSearcher.
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   683
727
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   684
    aCustomContext selectedClasses ? #() do:[ :class |
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   685
        aCustomContext selectedProtocols ? #() do:[ :protocol |
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   686
            class methodsDo:[ :method |
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   687
                (protocol = (method category)) ifTrue:[
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   688
                    methodSearcher search: searchPattern inMethod: method withResultDo: aBlock
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   689
                ]
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   690
            ]
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   691
        ]
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   692
    ]
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   693
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   694
    "Created: / 29-10-2014 / 19:16:33 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
203d550ff2a3 full CustomContext search implementation in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 712
diff changeset
   695
    "Modified: / 05-11-2014 / 20:59:12 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
629
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   696
! !
e85070e8c11b add code selection object (CustomSourceCodeSelection) with code, method, class... to CustomContext
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   697
652
f59c8a2e34da comment debug prints in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 650
diff changeset
   698
!CustomRefactoryBuilder class methodsFor:'documentation'!
f59c8a2e34da comment debug prints in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 650
diff changeset
   699
f59c8a2e34da comment debug prints in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 650
diff changeset
   700
version_HG
f59c8a2e34da comment debug prints in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 650
diff changeset
   701
f59c8a2e34da comment debug prints in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 650
diff changeset
   702
    ^ '$Changeset: <not expanded> $'
f59c8a2e34da comment debug prints in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 650
diff changeset
   703
! !
f59c8a2e34da comment debug prints in CustomRefactoryBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 650
diff changeset
   704