CustomAccessMethodsCodeGenerator.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 24 Aug 2014 01:49:18 +0100
changeset 635 9edd6a278835
parent 628 6f639016753b
parent 634 d77d9a7561be
child 681 34c671a3cf59
permissions -rw-r--r--
Merged 6f639016753b and d77d9a7561be
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     1
"{ Package: 'jn:refactoring_custom' }"
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     2
588
ba44cf2de8b7 rename CustomAccessMethodsCodeGeneratorTests to CustomGetterMethodsCodeGeneratorTests
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 585
diff changeset
     3
CustomCodeGenerator subclass:#CustomAccessMethodsCodeGenerator
566
29c2269d339a replace inst. variable generateCommentsForGetters with userPreferences call - more flexibility
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 563
diff changeset
     4
	instanceVariableNames:''
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     5
	classVariableNames:''
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     6
	poolDictionaries:''
559
ba4af98f41c5 Code generators and refactorings moved to their own class category.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 512
diff changeset
     7
	category:'Interface-Refactoring-Custom-Generators'
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     8
!
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     9
585
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
    10
628
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    11
!CustomAccessMethodsCodeGenerator class methodsFor:'accessing-presentation'!
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    12
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    13
group
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    14
    "Returns a collection strings describing a group to which
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    15
     receiver belongs. A groups may be nested hence the array of
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    16
     strings. For example for subgroup 'Accessors' in group 'Generators'
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    17
     this method should return #('Generators' 'Accessors')."
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    18
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    19
    "/ By default return an empty array which means the item will appear
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    20
    "/ in top-level group.
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    21
    ^ #(Accessors)
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    22
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    23
    "Created: / 22-08-2014 / 18:45:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    24
! !
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 616
diff changeset
    25
588
ba44cf2de8b7 rename CustomAccessMethodsCodeGeneratorTests to CustomGetterMethodsCodeGeneratorTests
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 585
diff changeset
    26
!CustomAccessMethodsCodeGenerator class methodsFor:'queries'!
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    27
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    28
availableInContext:aCustomContext
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    29
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    30
    ^ aCustomContext selectedClasses notEmptyOrNil
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    31
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    32
    "Modified: / 11-05-2014 / 17:37:08 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    33
!
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    34
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    35
availableInPerspective:aCustomPerspective
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    36
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    37
    ^ aCustomPerspective isClassPerspective or: [
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    38
        aCustomPerspective isInstanceVariablePerspective
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    39
    ]
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    40
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    41
    "Modified: / 11-05-2014 / 16:44:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    42
! !
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    43
588
ba44cf2de8b7 rename CustomAccessMethodsCodeGeneratorTests to CustomGetterMethodsCodeGeneratorTests
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 585
diff changeset
    44
!CustomAccessMethodsCodeGenerator class methodsFor:'testing'!
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    45
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    46
isAbstract
588
ba44cf2de8b7 rename CustomAccessMethodsCodeGeneratorTests to CustomGetterMethodsCodeGeneratorTests
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 585
diff changeset
    47
    ^ self == CustomAccessMethodsCodeGenerator
ba44cf2de8b7 rename CustomAccessMethodsCodeGeneratorTests to CustomGetterMethodsCodeGeneratorTests
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 585
diff changeset
    48
ba44cf2de8b7 rename CustomAccessMethodsCodeGeneratorTests to CustomGetterMethodsCodeGeneratorTests
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 585
diff changeset
    49
    "Modified: / 01-07-2014 / 16:19:36 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    50
! !
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    51
588
ba44cf2de8b7 rename CustomAccessMethodsCodeGeneratorTests to CustomGetterMethodsCodeGeneratorTests
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 585
diff changeset
    52
!CustomAccessMethodsCodeGenerator methodsFor:'accessing'!
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    53
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    54
protocol
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    55
    "Returns protocol name in which will belong getter method"
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    56
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    57
    ^ 'accessing'
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    58
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    59
    "Created: / 12-05-2014 / 23:26:24 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    60
! !
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    61
588
ba44cf2de8b7 rename CustomAccessMethodsCodeGeneratorTests to CustomGetterMethodsCodeGeneratorTests
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 585
diff changeset
    62
!CustomAccessMethodsCodeGenerator methodsFor:'code generation'!
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    63
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    64
sourceForClass: aClass variableName: aName
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    65
    "Should return getter method source code for given class and variable name"
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    66
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    67
    self subclassResponsibility
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    68
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    69
    "Created: / 12-05-2014 / 22:44:09 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    70
    "Modified: / 19-05-2014 / 20:33:51 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    71
! !
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    72
588
ba44cf2de8b7 rename CustomAccessMethodsCodeGeneratorTests to CustomGetterMethodsCodeGeneratorTests
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 585
diff changeset
    73
!CustomAccessMethodsCodeGenerator methodsFor:'executing'!
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    74
580
deded27a4575 complete tests (with mocks) for CustomGetterMethodsCodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 566
diff changeset
    75
buildInContext: aCustomContext
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    76
    | selectedVariables |
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    77
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    78
    selectedVariables := aCustomContext selectedVariables.
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    79
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    80
    aCustomContext selectedClasses do: [ :class | 
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    81
        | variableNames |    
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    82
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    83
        variableNames := class instVarNames.
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    84
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    85
        selectedVariables isEmptyOrNil ifFalse: [
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    86
            variableNames := variableNames select: [ :variableName | 
580
deded27a4575 complete tests (with mocks) for CustomGetterMethodsCodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 566
diff changeset
    87
                selectedVariables includes: variableName
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    88
            ]
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    89
        ].
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    90
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    91
        variableNames do:[ :variableName |
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    92
            | method source |
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    93
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    94
            source := self sourceForClass: class variableName: variableName.
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    95
634
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 593
diff changeset
    96
            method := codeBuilder createMethod.
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    97
            method 
585
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
    98
                class: (self methodClass: class);
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    99
                protocol: self protocol;
585
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   100
                source: source.
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   101
        ]
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   102
    ]
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   103
585
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   104
    "Modified: / 30-06-2014 / 10:26:37 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   105
! !
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   106
588
ba44cf2de8b7 rename CustomAccessMethodsCodeGeneratorTests to CustomGetterMethodsCodeGeneratorTests
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 585
diff changeset
   107
!CustomAccessMethodsCodeGenerator methodsFor:'protected'!
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   108
593
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   109
argNameForMethodName: aMethodName
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   110
    "Returns argument name based on given method name"
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   111
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   112
    ((aMethodName size > 2) and:[ (aMethodName startsWith:'is') and:[ (aMethodName at:3) isUppercase ]])
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   113
    ifTrue:[
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   114
        ^ 'aBoolean'
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   115
    ].
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   116
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   117
    ^ 'something'
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   118
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   119
    "Created: / 04-07-2014 / 10:24:52 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   120
!
a97a964ba9f8 add method for retrieving argument name for access methods generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 588
diff changeset
   121
585
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   122
defaultMethodNameFor: aVarName
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   123
    "Creates getter method name for retrieving default variable value"
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   124
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   125
    ^ 'default', aVarName asUppercaseFirst
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   126
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   127
    "Created: / 29-06-2014 / 23:26:58 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   128
!
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   129
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   130
methodClass: aClass
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   131
    "Returns class for which will be generated a getter method.
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   132
    By overriding this is possible for example to specify only metaclass of given class."
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   133
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   134
    ^ aClass
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   135
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   136
    "Created: / 29-06-2014 / 22:52:00 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   137
!
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   138
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   139
methodNameFor: aVarName
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   140
    "Creates getter method name for given variable name"
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   141
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   142
    | methodName |
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   143
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   144
    methodName := aVarName.
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   145
    aVarName isUppercaseFirst ifTrue:[
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   146
        (aVarName conform:[:ch | ch isLetter not or:[ch isUppercase]]) ifFalse:[      "/ allow all-uppercase for class-vars
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   147
            methodName := methodName asLowercaseFirst. 
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   148
        ]
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   149
    ].
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   150
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   151
    ^ methodName
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   152
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   153
    "Created: / 12-05-2014 / 22:04:21 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   154
!
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   155
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   156
varTypeOf: aVarName class: aClass
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   157
    "Returns variable type as string for given variable name and class"
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   158
556
107e4a470e73 add CustomCodeGeneratorTestCase as superclass for CodeGenerators TestCases to make testing easier
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 549
diff changeset
   159
    | classesClassVars varType |
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   160
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   161
    classesClassVars := aClass theNonMetaclass allClassVarNames.
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   162
556
107e4a470e73 add CustomCodeGeneratorTestCase as superclass for CodeGenerators TestCases to make testing easier
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 549
diff changeset
   163
    varType := (classesClassVars includes: aVarName) 
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   164
        ifTrue:['static'] 
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   165
        ifFalse:[
556
107e4a470e73 add CustomCodeGeneratorTestCase as superclass for CodeGenerators TestCases to make testing easier
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 549
diff changeset
   166
            (aClass isMeta ifTrue:['classInstVar'] ifFalse:['instance'])].
107e4a470e73 add CustomCodeGeneratorTestCase as superclass for CodeGenerators TestCases to make testing easier
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 549
diff changeset
   167
107e4a470e73 add CustomCodeGeneratorTestCase as superclass for CodeGenerators TestCases to make testing easier
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 549
diff changeset
   168
    ^ varType
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   169
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   170
    "Created: / 12-05-2014 / 21:40:49 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
580
deded27a4575 complete tests (with mocks) for CustomGetterMethodsCodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 566
diff changeset
   171
    "Modified: / 20-06-2014 / 21:30:15 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
549
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   172
! !
d34ea0b715b2 add method for retrieving builded source code as string: CustomSourceCodeBuilder >> buildedSource
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
   173
588
ba44cf2de8b7 rename CustomAccessMethodsCodeGeneratorTests to CustomGetterMethodsCodeGeneratorTests
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 585
diff changeset
   174
!CustomAccessMethodsCodeGenerator class methodsFor:'documentation'!
585
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   175
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   176
version_HG
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   177
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   178
    ^ '$Changeset: <not expanded> $'
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   179
! !
fdc3edf1a544 add getter methods with lazy initialization along with default variable value metaclass methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 580
diff changeset
   180