CustomSimpleSetterMethodsCodeGenerator.st
author Jakub Nesveda <jakubnesveda@seznam.cz>
Tue, 28 Oct 2014 09:39:46 +0100
changeset 711 605ab7fc9cd1
parent 674 58df305d9184
child 803 95cdac772759
permissions -rw-r--r--
return whole source code when selected interval is empty retrieve selector from method when none selector is specified
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
594
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     1
"{ Package: 'jn:refactoring_custom' }"
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     2
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     3
CustomAccessMethodsCodeGenerator subclass:#CustomSimpleSetterMethodsCodeGenerator
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     4
	instanceVariableNames:''
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     5
	classVariableNames:''
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     6
	poolDictionaries:''
656
a95284467938 move all code generators to category Interface-Refactoring-Custom-Generators
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 635
diff changeset
     7
	category:'Interface-Refactoring-Custom-Generators'
594
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     8
!
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     9
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    10
!CustomSimpleSetterMethodsCodeGenerator class methodsFor:'accessing-presentation'!
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    11
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    12
description
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    13
    "Returns more detailed description of the receiver"
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    14
    
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    15
    ^ 'Setter methods for selected instance variables'
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    16
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    17
    "Modified: / 04-07-2014 / 15:29:06 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    18
!
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    19
628
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 596
diff changeset
    20
group
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 596
diff changeset
    21
    "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: 596
diff changeset
    22
     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: 596
diff changeset
    23
     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: 596
diff changeset
    24
     this method should return #('Generators' 'Accessors')."
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 596
diff changeset
    25
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 596
diff changeset
    26
    "/ 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: 596
diff changeset
    27
    "/ in top-level group.
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 596
diff changeset
    28
    ^ #('Accessors' 'Setters')
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 596
diff changeset
    29
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 596
diff changeset
    30
    "Created: / 22-08-2014 / 18:55:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 596
diff changeset
    31
!
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 596
diff changeset
    32
594
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    33
label
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    34
    "Returns show label describing the receiver. This label
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    35
     is used in UI as menu item/tree item label."
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    36
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    37
    ^ 'Setter Method(s)'
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    38
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    39
    "Modified: / 04-07-2014 / 16:20:28 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    40
! !
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    41
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    42
!CustomSimpleSetterMethodsCodeGenerator methodsFor:'code generation'!
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    43
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    44
sourceForClass: aClass variableName: aName
595
e77b18508a4d add simple setter methods code generator (mixed with previous commit)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 594
diff changeset
    45
    "Returns simple setter for given class and variable name."
594
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    46
674
58df305d9184 work in progress - rewriting code generators to replace CustomSourceCodeBuilder, but RBClass, RBMetaclass, RBNamespace and CodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 656
diff changeset
    47
    | methodName comment argName |
594
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    48
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    49
    methodName := self methodNameFor: aName.
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    50
    argName := self argNameForMethodName: methodName.  
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    51
    comment := ''.
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    52
596
83dd4c2beeb2 fix setter comment setting
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 595
diff changeset
    53
    userPreferences generateCommentsForSetters ifTrue:[
594
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    54
        | varType |
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    55
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    56
        varType := self varTypeOf: aName class: aClass. 
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    57
        comment := '"set the value of the %1 variable ''%2'' (automatically generated)"'.
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    58
        comment := comment bindWith: varType with: aName.
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    59
    ].
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    60
674
58df305d9184 work in progress - rewriting code generators to replace CustomSourceCodeBuilder, but RBClass, RBMetaclass, RBNamespace and CodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 656
diff changeset
    61
    ^ self sourceCodeGenerator
594
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    62
        source: '`@methodName
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    63
            `"comment
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    64
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    65
            `variableName := `argName';
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    66
        replace: '`@methodName' with: (methodName, ': ', argName) asSymbol;
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    67
        replace: '`argName' with: argName asString;
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    68
        replace: '`variableName' with: aName asString;
674
58df305d9184 work in progress - rewriting code generators to replace CustomSourceCodeBuilder, but RBClass, RBMetaclass, RBNamespace and CodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 656
diff changeset
    69
        replace: '`"comment' with: comment;
58df305d9184 work in progress - rewriting code generators to replace CustomSourceCodeBuilder, but RBClass, RBMetaclass, RBNamespace and CodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 656
diff changeset
    70
        newSource.
594
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    71
674
58df305d9184 work in progress - rewriting code generators to replace CustomSourceCodeBuilder, but RBClass, RBMetaclass, RBNamespace and CodeGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 656
diff changeset
    72
    "Modified: / 19-09-2014 / 22:36:17 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
594
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    73
! !
df32b1054ff4 fix missing category in temporary access generator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    74