MCStXSnapshotPreWriteTransformation.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 29 Apr 2015 22:35:31 +0200
branchjv
changeset 992 f46203ad6470
parent 988 536fd853efeb
child 997 c9b7bdd4088a
permissions -rw-r--r--
.mcz reading/writing: change indentation of method source to respect platform's convention When writing .mcz, reindent method sources using tabs (which is the norm on Squeak / Pharo). When reading .mcz, reindent using tabs and spaces (which is the norm on Smalltalk/X)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
842
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
977
f95b01954348 class: MCStXSnapshotPreWriteTransformation
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
     3
"{ NameSpace: Smalltalk }"
f95b01954348 class: MCStXSnapshotPreWriteTransformation
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
     4
842
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
MCStXSnapshotTransformation subclass:#MCStXSnapshotPreWriteTransformation
987
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
     6
	instanceVariableNames:'extensionMethodCategoryMap projectDefinition includeExtrasForSTX'
842
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'SCM-Monticello-St/X Storing'
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!MCStXSnapshotPreWriteTransformation class methodsFor:'documentation'!
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
documentation
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
"
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
    documentation to be added.
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
    [author:]
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
        Jan Vrany <jan.vrany@fit.cvut.cz>
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
    [instance variables:]
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
    [class variables:]
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
    [see also:]
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
"
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
! !
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    30
!MCStXSnapshotPreWriteTransformation methodsFor:'accessing'!
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    31
938
f544f968df1d Expand tabs before writing .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 936
diff changeset
    32
monticelloName
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    33
    | def |
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    34
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    35
    def := self projectDefinition.
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    36
    ^def notNil ifTrue:[def monticelloName] ifFalse:[nil]
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    37
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    38
    "Created: / 31-05-2013 / 00:12:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    39
!
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    40
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    41
projectDefinition
877
493a70407896 class: MCStXSnapshotPreWriteTransformation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 875
diff changeset
    42
    original definitions reverseDo:[:d|
938
f544f968df1d Expand tabs before writing .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 936
diff changeset
    43
        | c |
f544f968df1d Expand tabs before writing .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 936
diff changeset
    44
        (d isClassDefinition
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    45
            and:[(c := d actualClass) notNil
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    46
                and:[c isProjectDefinition]])
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    47
                    ifTrue:[ ^ c  ]
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    48
    ].
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    49
    ^nil
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    50
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    51
    "Created: / 31-05-2013 / 00:23:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
877
493a70407896 class: MCStXSnapshotPreWriteTransformation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 875
diff changeset
    52
    "Modified: / 31-05-2013 / 10:45:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    53
! !
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    54
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    55
!MCStXSnapshotPreWriteTransformation methodsFor:'accessing - templates'!
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    56
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    57
monticelloSmalltalkXExtensionMethodCategories_Code
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    58
^
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    59
'monticelloSmalltalkXExtensionMethodCategor
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    60
    "Returns an array of triples (class name, selector , St/X category)
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    61
     This information is used by Smalltalk/X when reading back Monticello package
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    62
     to patch methods category as in Monticello extensions must have funny name
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    63
     to be recognized by Monticello as extensions."
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    64
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    65
    ^#(
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    66
%1
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    67
    )
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    68
'
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    69
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    70
    "Created: / 31-05-2013 / 00:20:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    71
!
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    72
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    73
monticelloSmalltalkXProjectType_Code
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    74
^
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    75
'monticelloSmalltalkXProjectType
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    76
    "Returns either #library or #application.
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    77
     This information is used by Smalltalk/X when reading back Monticello package
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    78
     to patch my superclass as neither LibraryDefinition nor ApplicationDefinition classes
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    79
     are present in Squeak/Pharo images."
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    80
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    81
    ^%1
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    82
'
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    83
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    84
    "Created: / 30-05-2013 / 12:42:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    85
! !
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    86
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    87
!MCStXSnapshotPreWriteTransformation methodsFor:'testing'!
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    88
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    89
isExtensionMethodDefinition: definition
875
cc0588b2a9db class: MCStXSnapshotPreWriteTransformation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 873
diff changeset
    90
    ^(transformed includesClassNamed: definition className) not
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    91
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
    92
    "Created: / 30-05-2013 / 22:48:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
875
cc0588b2a9db class: MCStXSnapshotPreWriteTransformation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 873
diff changeset
    93
    "Modified: / 31-05-2013 / 01:16:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
886
850e6b54a054 Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 877
diff changeset
    94
!
850e6b54a054 Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 877
diff changeset
    95
850e6b54a054 Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 877
diff changeset
    96
isSmalltalkXPackage
850e6b54a054 Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 877
diff changeset
    97
    ^ projectDefinition notNil
850e6b54a054 Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 877
diff changeset
    98
850e6b54a054 Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 877
diff changeset
    99
    "Created: / 12-06-2013 / 09:22:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   100
! !
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   101
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   102
!MCStXSnapshotPreWriteTransformation methodsFor:'transforming'!
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   103
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   104
transform: anMCSnapshot
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   105
    "Returns a transformed **copy** of the original snapshot"
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   106
987
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   107
    includeExtrasForSTX := anMCSnapshot includeExtrasForSTX.
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   108
    extensionMethodCategoryMap := OrderedCollection new.
938
f544f968df1d Expand tabs before writing .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 936
diff changeset
   109
    original := anMCSnapshot.
886
850e6b54a054 Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 877
diff changeset
   110
    projectDefinition := self projectDefinition.
850e6b54a054 Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 877
diff changeset
   111
    projectDefinition isNil ifTrue:[
850e6b54a054 Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 877
diff changeset
   112
        "/ Not a Smalltalk/X package - no transformation
850e6b54a054 Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 877
diff changeset
   113
        transformed := original.
938
f544f968df1d Expand tabs before writing .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 936
diff changeset
   114
        ^transformed
886
850e6b54a054 Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 877
diff changeset
   115
    ].
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   116
    super transform: anMCSnapshot.
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   117
    (projectDefinition notNil and:[extensionMethodCategoryMap notEmpty]) ifTrue:[
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   118
        | source |
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   119
938
f544f968df1d Expand tabs before writing .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 936
diff changeset
   120
        source :=
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   121
            self monticelloSmalltalkXExtensionMethodCategories_Code bindWith:
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   122
                (String streamContents:[:s|
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   123
                    extensionMethodCategoryMap do:[:entry|
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   124
                        s tab; tab; nextPutLine:  entry storeString
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   125
                    ].
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   126
                ]).
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   127
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   128
         transformed definitions addFirst:
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   129
            (MCMethodDefinition
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   130
                className:  projectDefinition name
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   131
                classIsMeta: true
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   132
                selector: 'monticelloSmalltalkXExtensionMethodCategories'
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   133
                category: 'accessing - monticello'
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   134
                timeStamp: 'Generated by ', self class name , ' at ' , Timestamp now printString
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   135
                source: source)
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   136
    ].
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   137
    ^transformed.
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   138
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   139
    "Created: / 31-05-2013 / 00:05:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
987
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   140
    "Modified: / 24-04-2015 / 12:39:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   141
! !
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   142
842
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
!MCStXSnapshotPreWriteTransformation methodsFor:'visiting'!
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
visitClassDefinition: definition
977
f95b01954348 class: MCStXSnapshotPreWriteTransformation
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   146
    "
f95b01954348 class: MCStXSnapshotPreWriteTransformation
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   147
     save ProjectDefinition classes with Object as superclass   
f95b01954348 class: MCStXSnapshotPreWriteTransformation
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   148
     (because ProjectDefinition is not present in Pharo/Squeak).
f95b01954348 class: MCStXSnapshotPreWriteTransformation
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   149
     When reading back into ST/X, the PostReadTransformation undoes this
f95b01954348 class: MCStXSnapshotPreWriteTransformation
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   150
    "
842
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
    | class |
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
    class := definition actualClass.
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
    class isProjectDefinition ifTrue:[
987
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   155
        transformed definitions remove: definition.
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   156
        includeExtrasForSTX ifTrue:[    
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   157
            definition
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   158
    "/            className:(definition className capitalized);
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   159
                superclassName: #Object;
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   160
                category: class monticelloName.
877
493a70407896 class: MCStXSnapshotPreWriteTransformation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 875
diff changeset
   161
987
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   162
            transformed definitions addFirst:
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   163
                (MCMethodDefinition
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   164
                    className: definition className
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   165
                    classIsMeta: true
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   166
                    selector: 'monticelloProjectDefinitionTypeName'
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   167
                    category: 'accessing - monticello'
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   168
                    timeStamp: 'Generated by ', self class name , ' at ' , Timestamp now printString
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   169
                    source:
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   170
                        (self monticelloSmalltalkXProjectType_Code bindWith: (class isApplicationDefinition ifTrue:[#application] ifFalse:[#library]) storeString))
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   171
        ]
873
8c7a9dcb9a69 class: MCStXSnapshotPreWriteTransformation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 863
diff changeset
   172
    ]
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   173
842
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
    "Created: / 29-05-2013 / 12:19:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
987
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   175
    "Modified: / 23-04-2015 / 23:26:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   176
!
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   177
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   178
visitMethodDefinition: definition
987
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   179
    | class source |
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   180
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   181
    includeExtrasForSTX ifFalse:[  
988
536fd853efeb mcz writing: do not include version_XX methods when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 987
diff changeset
   182
        "/ If St/X extras should not be included, then remove all methods
536fd853efeb mcz writing: do not include version_XX methods when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 987
diff changeset
   183
        "/ that belong to project definition class.
987
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   184
        class := definition actualClass.
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   185
        class == projectDefinition ifTrue:[ 
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   186
            transformed definitions remove: definition.
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   187
            ^ self.
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   188
        ].
988
536fd853efeb mcz writing: do not include version_XX methods when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 987
diff changeset
   189
        "/ Also, remove all version_XX methods
536fd853efeb mcz writing: do not include version_XX methods when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 987
diff changeset
   190
        (AbstractSourceCodeManager isVersionMethodSelector: definition selector) ifTrue:[
536fd853efeb mcz writing: do not include version_XX methods when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 987
diff changeset
   191
            transformed definitions remove: definition.
536fd853efeb mcz writing: do not include version_XX methods when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 987
diff changeset
   192
        ]
987
7dbc6348209e mcz writing: do not include project definition class when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 977
diff changeset
   193
    ].
938
f544f968df1d Expand tabs before writing .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 936
diff changeset
   194
992
f46203ad6470 .mcz reading/writing: change indentation of method source to respect platform's convention
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 988
diff changeset
   195
    source := definition source asStringWithNativeLineEndings.  "/ Make sure source has native line endings
f46203ad6470 .mcz reading/writing: change indentation of method source to respect platform's convention
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 988
diff changeset
   196
    source := self class reindentUsingTabsOnly: source.         "/ Make sure there are only tabs (norm on Squeak / Pharo)
f46203ad6470 .mcz reading/writing: change indentation of method source to respect platform's convention
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 988
diff changeset
   197
    source := source asStringWithSqueakLineEndings.             "/ Make sure source has Squeak line endings
f46203ad6470 .mcz reading/writing: change indentation of method source to respect platform's convention
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 988
diff changeset
   198
    source := source asSingleByteStringIfPossible.              "/ Convert to single byte string
f46203ad6470 .mcz reading/writing: change indentation of method source to respect platform's convention
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 988
diff changeset
   199
938
f544f968df1d Expand tabs before writing .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 936
diff changeset
   200
    definition source: source.
f544f968df1d Expand tabs before writing .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 936
diff changeset
   201
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   202
    (self isExtensionMethodDefinition: definition) ifTrue:[
936
c4564a0396b9 Fix in MCStXSnapshotPreWriteTransformation: do not fix extension cstegory if the prefix in OK.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 932
diff changeset
   203
        | prefix |
c4564a0396b9 Fix in MCStXSnapshotPreWriteTransformation: do not fix extension cstegory if the prefix in OK.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 932
diff changeset
   204
c4564a0396b9 Fix in MCStXSnapshotPreWriteTransformation: do not fix extension cstegory if the prefix in OK.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 932
diff changeset
   205
        prefix := '*' , self monticelloName asLowercase.
c4564a0396b9 Fix in MCStXSnapshotPreWriteTransformation: do not fix extension cstegory if the prefix in OK.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 932
diff changeset
   206
        (definition category asLowercase startsWith: prefix) ifFalse:[
c4564a0396b9 Fix in MCStXSnapshotPreWriteTransformation: do not fix extension cstegory if the prefix in OK.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 932
diff changeset
   207
            extensionMethodCategoryMap add:
938
f544f968df1d Expand tabs before writing .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 936
diff changeset
   208
                (Array
936
c4564a0396b9 Fix in MCStXSnapshotPreWriteTransformation: do not fix extension cstegory if the prefix in OK.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 932
diff changeset
   209
                    with: definition className , (definition classIsMeta ifTrue:[' class'] ifFalse:[''])
c4564a0396b9 Fix in MCStXSnapshotPreWriteTransformation: do not fix extension cstegory if the prefix in OK.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 932
diff changeset
   210
                    with: definition selector
c4564a0396b9 Fix in MCStXSnapshotPreWriteTransformation: do not fix extension cstegory if the prefix in OK.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 932
diff changeset
   211
                    with: definition category).
c4564a0396b9 Fix in MCStXSnapshotPreWriteTransformation: do not fix extension cstegory if the prefix in OK.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 932
diff changeset
   212
            definition category: '*' , self monticelloName.
c4564a0396b9 Fix in MCStXSnapshotPreWriteTransformation: do not fix extension cstegory if the prefix in OK.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 932
diff changeset
   213
        ]
863
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   214
    ].
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   215
310347ceb9df More improvements in pre-write transformations.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 842
diff changeset
   216
    "Created: / 30-05-2013 / 22:48:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
992
f46203ad6470 .mcz reading/writing: change indentation of method source to respect platform's convention
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 988
diff changeset
   217
    "Modified: / 24-04-2015 / 16:01:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
932
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   218
!
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   219
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   220
visitOrganizationDefinition: defintion
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   221
    "Add a category in which project definition class is..."
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   222
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   223
    | categories |
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   224
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   225
    categories := defintion categories.
938
f544f968df1d Expand tabs before writing .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 936
diff changeset
   226
    (categories includes: projectDefinition monticelloName) ifFalse:[
932
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   227
        categories := categories copyWith: projectDefinition monticelloName asSymbol.
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   228
        defintion categories: categories.
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   229
    ].
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   230
b74cf6420afc Fix in MCStXSnapshotPreWriteTransformation.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 898
diff changeset
   231
    "Created: / 05-10-2014 / 00:59:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
842
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
! !
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
!MCStXSnapshotPreWriteTransformation class methodsFor:'documentation'!
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
version
977
f95b01954348 class: MCStXSnapshotPreWriteTransformation
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   237
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStXSnapshotPreWriteTransformation.st,v 1.11 2015-03-30 19:54:21 cg Exp $'
842
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
!
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
version_CVS
977
f95b01954348 class: MCStXSnapshotPreWriteTransformation
Claus Gittinger <cg@exept.de>
parents: 938
diff changeset
   241
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStXSnapshotPreWriteTransformation.st,v 1.11 2015-03-30 19:54:21 cg Exp $'
988
536fd853efeb mcz writing: do not include version_XX methods when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 987
diff changeset
   242
!
536fd853efeb mcz writing: do not include version_XX methods when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 987
diff changeset
   243
536fd853efeb mcz writing: do not include version_XX methods when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 987
diff changeset
   244
version_HG
536fd853efeb mcz writing: do not include version_XX methods when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 987
diff changeset
   245
536fd853efeb mcz writing: do not include version_XX methods when include St/X extras is not wanted
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 987
diff changeset
   246
    ^ '$Changeset: <not expanded> $'
842
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
! !
5d2a3cd1bb44 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248