extensions.st
author Claus Gittinger <cg@exept.de>
Sat, 20 Aug 2011 16:19:25 +0200
changeset 395 77ab26056e94
parent 182 09c4caf9e56e
child 428 cacb8613ba9c
permissions -rw-r--r--
added: #named: #version #version_CVS
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
150
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"!
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
     2
395
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
     3
!Annotation class methodsFor:'instance creation'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
     4
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
     5
mctimestamp: aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
     6
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
     7
    ^MCTimestampAnnotation new timestamp: aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
     8
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
     9
    "Created: / 14-09-2010 / 15:35:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    10
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    11
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    12
!Behavior methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    13
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    14
includesLocalSelector:aSymbol 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    15
    ^ self localSelectors includes:aSymbol
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    16
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    17
    "Created: / 26-08-2009 / 11:50:00 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    18
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    19
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    20
!Behavior methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    21
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    22
localSelectors
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    23
    ^ self methodDictionary collect:[:x | x selector asSymbol ]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    24
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    25
    "Created: / 26-08-2009 / 11:53:47 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    26
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    27
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    28
!Behavior methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    29
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    30
traitCompositionString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    31
        ^ '{}'
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    32
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    33
    "Created: / 26-08-2009 / 12:43:23 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    34
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    35
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    36
!Behavior methodsFor:'*monticello-squeakCompatibility'!
150
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    37
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    38
typeOfClass
395
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    39
        "Answer a symbol uniquely describing the type of the receiver"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    40
        "self instSpec = CompiledMethod instSpec ifTrue:[^#compiledMethod]." "Very special!!"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    41
        self isBytes ifTrue:[^#bytes].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    42
        (self isWords and:[self isPointers not]) ifTrue:[^#words].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    43
        self isWeakPointers ifTrue:[^#weak].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    44
        self isVariable ifTrue:[^#variable].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    45
        ^#normal.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    46
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    47
    "Created: / 26-08-2009 / 12:45:50 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    48
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    49
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    50
!Boolean methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    51
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    52
and: block1 and: block2
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    53
        "Nonevaluating conjunction without deep nesting.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    54
        The receiver is evaluated, followed by the blocks in order.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    55
        If any of these evaluates as false, then return false immediately,
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    56
                without evaluating any further blocks.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    57
        If all return true, then return true."
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    58
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    59
        self ifFalse: [^ false].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    60
        block1 value ifFalse: [^ false].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    61
        block2 value ifFalse: [^ false].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    62
        ^ true
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    63
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    64
    "Created: / 26-08-2009 / 11:47:54 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    65
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    66
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    67
!Boolean methodsFor:'*monticello-squeakCompatibility'!
150
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
    68
395
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    69
or: block1 or: block2 or: block3 or: block4
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    70
        "Nonevaluating alternation without deep nesting.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    71
        The receiver is evaluated, followed by the blocks in order.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    72
        If any of these evaluates as true, then return true immediately,
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    73
                without evaluating any further blocks.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    74
        If all return false, then return false."
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    75
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    76
        self ifTrue: [^ true].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    77
        block1 value ifTrue: [^ true].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    78
        block2 value ifTrue: [^ true].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    79
        block3 value ifTrue: [^ true].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    80
        block4 value ifTrue: [^ true].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    81
        ^ false
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    82
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    83
    "Created: / 26-08-2009 / 12:21:41 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    84
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    85
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    86
!Change methodsFor:'accessing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    87
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    88
mcDefinition
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    89
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    90
    ^self objectAttributeAt: #mcDefinition
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    91
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    92
    "Created: / 08-11-2010 / 17:56:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    93
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    94
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    95
!Change methodsFor:'accessing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    96
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    97
mcDefinition: aMCDefinition
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    98
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
    99
    ^self objectAttributeAt: #mcDefinition put: aMCDefinition
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   100
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   101
    "Created: / 08-11-2010 / 17:56:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
150
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   102
! !
136
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   103
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   104
!Class methodsFor:'*monticello'!
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   105
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   106
asClassDefinition
395
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   107
    ^ MCClassDefinition
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   108
        name: self name
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   109
        superclassName: self superclass name
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   110
        traitComposition: self traitCompositionString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   111
        classTraitComposition: self class traitCompositionString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   112
        category: self category 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   113
        instVarNames: self instVarNames
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   114
        classVarNames: self classVarNames
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   115
        poolDictionaryNames: self poolDictionaryNames
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   116
        classInstVarNames: self class instVarNames
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   117
        type: self typeOfClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   118
        comment: (self organization classComment ? '') asStringWithSqueakLineEndings
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   119
        commentStamp: self organization commentStamp
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   120
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   121
    "Modified: / 12-09-2010 / 17:19:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
136
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   122
! !
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   123
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   124
!Class methodsFor:'*monticello'!
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   125
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   126
classDefinitions
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   127
	^ Array with: self asClassDefinition
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   128
! !
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   129
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   130
!Class methodsFor:'*monticello'!
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   131
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   132
poolDictionaryNames
160
c26ad17d4dc7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 150
diff changeset
   133
        ^ self sharedPools "/ collect: [:ea | ea name "self environment keyAtIdentityValue: ea"]
136
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   134
! !
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   135
150
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   136
!ClassBuilder methodsFor:'compatibility - squeak'!
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   137
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   138
name:newName 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   139
    inEnvironment:aSystemDictionaryOrClass 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   140
    subclassOf:aClass
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   141
    type: type 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   142
    instanceVariableNames: stringOfInstVarNames 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   143
    classVariableNames: stringOfClassVarNames 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   144
    poolDictionaries: stringOfPoolNames
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   145
    category: categoryString
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   146
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   147
    |variableBoolean wordsBoolean pointersBoolean|
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   148
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   149
    variableBoolean := wordsBoolean := pointersBoolean := false.
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   150
    type ~~ #normal ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   151
self halt:'todo'.
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   152
    ].
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   153
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   154
    self 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   155
        name:newName 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   156
        inEnvironment:aSystemDictionaryOrClass 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   157
        subclassOf:aClass 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   158
        instanceVariableNames:stringOfInstVarNames 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   159
        variable:variableBoolean 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   160
        words:wordsBoolean 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   161
        pointers:pointersBoolean 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   162
        classVariableNames:stringOfClassVarNames 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   163
        poolDictionaries:stringOfPoolNames 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   164
        category:categoryString 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   165
        comment:''
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   166
        changed:false
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   167
        classInstanceVariableNames:''. 
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   168
! !
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   169
395
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   170
!ClassDescription methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   171
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   172
classSide
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   173
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   174
    ^ self theMetaclass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   175
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   176
    "Created: / 26-08-2009 / 11:44:51 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   177
    "Modified: / 12-09-2010 / 16:38:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   178
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   179
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   180
!ClassDescription methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   181
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   182
mcDefinition
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   183
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   184
    |s|
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   185
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   186
    s := WriteStream on:(String new).
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   187
    self
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   188
        basicFileOutDefinitionOn:s
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   189
        withNameSpace:false
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   190
        withPackage:false.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   191
    s position: s position - 1.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   192
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   193
    ^ s contents
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   194
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   195
    "Created: / 11-09-2010 / 18:06:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   196
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   197
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   198
!ClassDescription methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   199
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   200
theNonMetaClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   201
 ^ self
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   202
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   203
    "Created: / 26-08-2009 / 11:39:08 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   204
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   205
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   206
!Metaclass methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   207
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   208
theNonMetaClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   209
 ^ myClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   210
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   211
    "Created: / 26-08-2009 / 11:39:48 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   212
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   213
136
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   214
!Object methodsFor:'*monticello'!
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   215
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   216
isConflict
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   217
	^false
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   218
! !
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   219
395
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   220
!PackageInfo methodsFor:'comparing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   221
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   222
= other
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   223
	^ other species = self species and: [other packageName = self packageName]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   224
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   225
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   226
!PackageInfo methodsFor:'modifying'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   227
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   228
addCoreMethod: aMethodReference
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   229
	| category |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   230
	category := self baseCategoryOfMethod: aMethodReference.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   231
	aMethodReference actualClass organization
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   232
		classify: aMethodReference methodSymbol
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   233
		under: category
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   234
		suppressIfDefault: false
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   235
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   236
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   237
!PackageInfo methodsFor:'modifying'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   238
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   239
addExtensionMethod: aMethodReference
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   240
	| category |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   241
	category := self baseCategoryOfMethod: aMethodReference.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   242
	aMethodReference actualClass organization
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   243
		classify: aMethodReference methodSymbol
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   244
		under: self methodCategoryPrefix, '-', category
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   245
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   246
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   247
!PackageInfo methodsFor:'modifying'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   248
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   249
addMethod: aMethodReference
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   250
	(self includesClass: aMethodReference class)
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   251
		ifTrue: [self addCoreMethod: aMethodReference]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   252
		ifFalse: [self addExtensionMethod: aMethodReference]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   253
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   254
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   255
!PackageInfo methodsFor:'modifying'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   256
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   257
baseCategoryOfMethod: aMethodReference
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   258
	| oldCat oldPrefix tokens | 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   259
	oldCat := aMethodReference category.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   260
	({ 'as yet unclassified'. 'all' } includes: oldCat) ifTrue: [ oldCat := '' ].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   261
	tokens := oldCat findTokens: '*-' keep: '*'.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   262
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   263
	"Strip off any old prefixes"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   264
	((tokens at: 1 ifAbsent: [ '' ]) = '*') ifTrue: [
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   265
		[ ((tokens at: 1 ifAbsent: [ '' ]) = '*') ]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   266
			whileTrue: [ tokens removeFirst ].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   267
		oldPrefix := tokens removeFirst asLowercase.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   268
		[ (tokens at: 1 ifAbsent: [ '' ]) asLowercase = oldPrefix ]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   269
			whileTrue: [ tokens removeFirst ].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   270
	].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   271
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   272
	tokens isEmpty ifTrue: [^ 'as yet unclassified'].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   273
	^ String streamContents:
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   274
		[ :s |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   275
		tokens
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   276
			do: [ :tok | s nextPutAll: tok ]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   277
			separatedBy: [ s nextPut: $- ]]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   278
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   279
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   280
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   281
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   282
category: categoryName matches: prefix
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   283
	^ categoryName notNil and: [categoryName = prefix or: [categoryName beginsWith: prefix, '-']]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   284
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   285
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   286
!PackageInfo methodsFor:'naming'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   287
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   288
categoryName
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   289
	|category|
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   290
	category := self class category.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   291
	^ (category endsWith: '-Info')
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   292
		ifTrue: [category copyUpToLast: $-]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   293
		ifFalse: [category]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   294
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   295
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   296
!PackageInfo methodsFor:'listing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   297
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   298
classesAndMetaClasses
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   299
	| baseClasses |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   300
	baseClasses := self classes.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   301
	^baseClasses , (baseClasses collect: [:c | c classSide])
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   302
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   303
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   304
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   305
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   306
coreCategoriesForClass: aClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   307
	^ aClass organization categories select: [:cat | (self isForeignClassExtension: cat) not]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   308
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   309
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   310
!PackageInfo methodsFor:'listing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   311
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   312
coreMethods
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   313
	^ self classesAndMetaClasses gather: [:class | self coreMethodsForClass: class]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   314
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   315
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   316
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   317
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   318
coreMethodsForClass:aClass 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   319
    ^ ((aClass selectors difference: (aClass isMetaclass ifTrue:[#(#version_MC)] ifFalse:[#()]))
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   320
        difference:((self foreignExtensionMethodsForClass:aClass) 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   321
                collect:[:r | r methodSymbol ])) 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   322
            asArray collect:[:sel | self referenceForMethod:sel ofClass:aClass ]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   323
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   324
    "Modified: / 14-09-2010 / 15:59:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   325
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   326
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   327
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   328
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   329
extensionCategoriesForClass: aClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   330
	^ aClass organization categories select: [:cat | self isYourClassExtension: cat]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   331
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   332
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   333
!PackageInfo methodsFor:'listing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   334
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   335
extensionClasses
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   336
	^ self externalBehaviors reject: [:classOrTrait | (self extensionCategoriesForClass: classOrTrait) isEmpty]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   337
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   338
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   339
!PackageInfo methodsFor:'listing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   340
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   341
extensionMethods
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   342
    
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   343
    ^ self externalBehaviors gather: [:classOrTrait | self extensionMethodsForClass: classOrTrait]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   344
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   345
    "Modified: / 18-08-2009 / 10:36:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   346
    "Modified: / 12-09-2010 / 18:57:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   347
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   348
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   349
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   350
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   351
extensionMethodsFromClasses: classes
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   352
	^classes
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   353
		gather: [:class | self extensionMethodsForClass: class]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   354
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   355
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   356
!PackageInfo methodsFor:'modifying'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   357
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   358
externalBehaviors
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   359
	^self externalClasses , self externalTraits
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   360
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   361
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   362
!PackageInfo methodsFor:'dependencies'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   363
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   364
externalCallers
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   365
	^ self 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   366
		externalRefsSelect: [:literal | literal isKindOf: Symbol] 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   367
		thenCollect: [:l | l].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   368
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   369
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   370
!PackageInfo methodsFor:'dependencies'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   371
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   372
externalClasses
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   373
        | myClasses |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   374
        myClasses := self classesAndMetaClasses asSet.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   375
        ^ Array streamContents:
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   376
                [:s |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   377
                Object withAllSubclassesDo:
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   378
                        [:class |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   379
                        (class programmingLanguage isSmalltalk not or:[myClasses includes: class]) ifFalse: [s nextPut: class]]]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   380
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   381
    "Modified: / 26-10-2010 / 23:46:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   382
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   383
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   384
!PackageInfo methodsFor:'naming'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   385
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   386
externalName
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   387
	^ self packageName
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   388
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   389
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   390
!PackageInfo methodsFor:'dependencies'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   391
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   392
externalRefsSelect: selBlock thenCollect: colBlock
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   393
	| pkgMethods dependents refs extMethods otherClasses otherMethods classNames |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   394
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   395
	classNames := self classes collect: [:c | c name].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   396
	extMethods := self extensionMethods collect: [:mr | mr methodSymbol].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   397
	otherClasses := self externalClasses difference: self externalSubclasses.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   398
	otherMethods :=  otherClasses gather: [:c | c selectors].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   399
	pkgMethods := self methods asSet collect: [:mr | mr methodSymbol].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   400
	pkgMethods removeAllFoundIn: otherMethods.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   401
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   402
	dependents := Set new.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   403
	otherClasses do: [:c |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   404
		c selectorsAndMethodsDo:
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   405
			[:sel :compiled |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   406
			(extMethods includes: sel) ifFalse: 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   407
				[refs := compiled literals select: selBlock thenCollect: colBlock.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   408
				refs do: [:ea |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   409
					((classNames includes: ea) or: [pkgMethods includes: ea])
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   410
							ifTrue: [dependents add: (self referenceForMethod: sel ofClass: c) -> ea]]]]].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   411
	^ dependents
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   412
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   413
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   414
!PackageInfo methodsFor:'dependencies'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   415
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   416
externalSubclasses
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   417
	| pkgClasses subClasses |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   418
	pkgClasses := self classes.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   419
	subClasses := Set new.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   420
	pkgClasses do: [:c | subClasses addAll: (c allSubclasses)].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   421
	^ subClasses difference: pkgClasses
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   422
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   423
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   424
!PackageInfo methodsFor:'modifying'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   425
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   426
externalTraits
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   427
	| behaviors |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   428
	
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   429
	^ Array streamContents: [:s |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   430
		behaviors := self classesAndMetaClasses.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   431
		Smalltalk allTraits do: [:trait |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   432
			(behaviors includes: trait) ifFalse: [s nextPut: trait].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   433
			(behaviors includes: trait classSide) ifFalse: [s nextPut: trait classSide]]].			
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   434
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   435
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   436
!PackageInfo methodsFor:'dependencies'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   437
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   438
externalUsers
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   439
	^ self 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   440
		externalRefsSelect: [:literal | literal isVariableBinding] 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   441
		thenCollect: [:l | l key]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   442
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   443
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   444
!PackageInfo methodsFor:'listing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   445
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   446
foreignClasses
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   447
	| s |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   448
	s := IdentitySet new.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   449
	self foreignSystemCategories
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   450
		do: [:c | (SystemOrganization listAtCategoryNamed: c)
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   451
				do: [:cl | 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   452
					| cls | 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   453
					cls := Smalltalk at: cl. 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   454
					s add: cls;
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   455
					  add: cls class]].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   456
	^ s
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   457
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   458
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   459
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   460
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   461
foreignExtensionCategoriesForClass: aClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   462
	^ aClass organization categories select: [:cat | self isForeignClassExtension: cat]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   463
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   464
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   465
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   466
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   467
foreignExtensionMethodsForClass: aClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   468
	^ (self foreignExtensionCategoriesForClass: aClass)
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   469
		gather: [:cat | (aClass organization listAtCategoryNamed: cat)
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   470
						  collect: [:sel | self referenceForMethod: sel ofClass: aClass]]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   471
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   472
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   473
!PackageInfo methodsFor:'listing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   474
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   475
foreignSystemCategories
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   476
	^ SystemOrganization categories
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   477
		reject: [:cat | self includesSystemCategory: cat] 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   478
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   479
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   480
!PackageInfo methodsFor:'comparing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   481
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   482
hash
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   483
        ^ name hash
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   484
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   485
    "Modified: / 12-09-2010 / 16:26:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   486
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   487
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   488
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   489
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   490
includesClass: aClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   491
	^ self includesSystemCategory: aClass theNonMetaClass category
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   492
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   493
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   494
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   495
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   496
includesClassNamed: aClassName
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   497
	^ self includesSystemCategory: ((SystemOrganization categoryOfElement: aClassName) ifNil: [^false])
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   498
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   499
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   500
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   501
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   502
includesMethod: aSymbol ofClass: aClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   503
	aClass ifNil: [^ false].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   504
	^ self
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   505
		includesMethodCategory: ((aClass organization categoryOfElement: aSymbol)
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   506
										ifNil: [' '])
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   507
		ofClass: aClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   508
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   509
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   510
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   511
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   512
includesMethodCategory: categoryName ofClass: aClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   513
	^ (self isYourClassExtension: categoryName)
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   514
		or: [(self includesClass: aClass)
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   515
				and: [(self isForeignClassExtension: categoryName) not]]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   516
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   517
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   518
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   519
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   520
includesMethodCategory: categoryName ofClassNamed: aClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   521
	^ (self isYourClassExtension: categoryName)
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   522
		or: [(self includesClassNamed: aClass)
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   523
				and: [(self isForeignClassExtension: categoryName) not]]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   524
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   525
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   526
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   527
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   528
includesMethodReference: aMethodRef
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   529
	^ self includesMethod: aMethodRef methodSymbol ofClass: aMethodRef actualClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   530
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   531
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   532
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   533
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   534
includesSystemCategory: categoryName
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   535
	^ self category: categoryName matches: self systemCategoryPrefix
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   536
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   537
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   538
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   539
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   540
isForeignClassExtension: categoryName
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   541
	^ categoryName first = $* and: [(self isYourClassExtension: categoryName) not]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   542
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   543
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   544
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   545
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   546
isOverrideMethod: aMethodReference
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   547
	^ aMethodReference category endsWith: '-override'
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   548
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   549
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   550
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   551
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   552
isYourClassExtension: categoryName
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   553
	^ categoryName notNil and: [self category: categoryName asLowercase matches: self methodCategoryPrefix]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   554
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   555
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   556
!PackageInfo methodsFor:'naming'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   557
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   558
methodCategoryPrefix
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   559
	"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   560
	^ methodCategoryPrefix ifNil: [methodCategoryPrefix := '*', self packageName asLowercase]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   561
	 "
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   562
	^ '*', self packageName asLowercase
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   563
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   564
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   565
!PackageInfo methodsFor:'listing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   566
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   567
methods
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   568
	^ (self extensionMethods, self coreMethods) select: [:method |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   569
		method isValid
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   570
			and: [method isLocalSelector]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   571
			and: [method methodSymbol isDoIt not]]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   572
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   573
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   574
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   575
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   576
outsideClasses
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   577
	^ProtoObject withAllSubclasses difference: self classesAndMetaClasses
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   578
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   579
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   580
!PackageInfo methodsFor:'listing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   581
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   582
overrideMethods
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   583
	^ self extensionMethods select: [:ea | self isOvverideMethod: ea]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   584
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   585
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   586
!PackageInfo methodsFor:'naming'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   587
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   588
packageName
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   589
	"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   590
	^ packageName ifNil: [packageName := self categoryName]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   591
	"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   592
	^self categoryName
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   593
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   594
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   595
!PackageInfo methodsFor:'naming'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   596
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   597
packageName: aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   598
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   599
    name := aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   600
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   601
    "Modified: / 11-09-2010 / 13:25:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   602
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   603
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   604
!PackageInfo methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   605
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   606
referenceForMethod: aSymbol ofClass: aClass
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   607
	^ MethodReference new setStandardClass: aClass methodSymbol: aSymbol
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   608
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   609
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   610
!PackageInfo methodsFor:'registering'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   611
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   612
register
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   613
	PackageOrganizer default registerPackage: self
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   614
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   615
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   616
!PackageInfo methodsFor:'modifying'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   617
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   618
removeMethod: aMethodReference
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   619
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   620
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   621
!PackageInfo methodsFor:'listing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   622
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   623
selectors
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   624
	^ self methods collect: [:ea | ea methodSymbol]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   625
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   626
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   627
!PackageInfo methodsFor:'listing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   628
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   629
systemCategories
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   630
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   631
    ^(Smalltalk allClasses 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   632
        collect: [:cls | cls category]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   633
        thenSelect:[:cat|cat startsWith: name]) asSet
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   634
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   635
    "Modified: / 12-09-2010 / 16:35:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   636
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   637
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   638
!PackageInfo methodsFor:'naming'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   639
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   640
systemCategoryPrefix
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   641
	^ self packageName
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   642
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   643
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   644
!PackageInfo class methodsFor:'packages access'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   645
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   646
allPackages
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   647
	^PackageOrganizer default packages
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   648
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   649
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   650
!PackageInfo class methodsFor:'compatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   651
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   652
default
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   653
	^ self allPackages detect: [:ea | ea class = self] ifNone: [self new register]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   654
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   655
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   656
!PackageInfo class methodsFor:'documentation'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   657
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   658
documentation
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   659
"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   660
    This is a dummy, mimicry class to allow some squeak code to be filed in.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   661
    Its protocol is neither complete, nor fully compatible with the corresponding
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   662
    squeak original class.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   663
"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   664
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   665
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   666
!PackageInfo class methodsFor:'testing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   667
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   668
existPackageNamed: aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   669
	"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   670
	self existPackageNamed: 'PackageInfo'
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   671
	self existPackageNamed: 'Zork'
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   672
	"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   673
	^ (self allPackages anySatisfy: [:each | each packageName = aString])
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   674
			
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   675
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   676
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   677
!PackageInfo class methodsFor:'initialization'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   678
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   679
initialize
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   680
	self allSubclassesDo: [:ea | ea new register]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   681
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   682
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   683
!PackageInfo class methodsFor:'packages access'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   684
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   685
registerPackageName: aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   686
	^ PackageOrganizer default registerPackageNamed: aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   687
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   688
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   689
!ProjectDefinition class methodsFor:'code generation'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   690
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   691
monticelloTimestamps_code
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   692
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   693
    | methodsWithTimestamp |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   694
    methodsWithTimestamp := OrderedCollection new.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   695
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   696
    self classes do:[:cls|
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   697
        cls methodsDo:[:mthd|
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   698
            (mthd hasAnnotation: #mctimestamp:) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   699
                methodsWithTimestamp add: mthd
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   700
            ]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   701
        ].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   702
    ].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   703
    self extensionMethods do:[:mthd|
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   704
        (mthd hasAnnotation: #mctimestamp:) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   705
            methodsWithTimestamp add: mthd                
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   706
        ]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   707
    ].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   708
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   709
    ^self monticelloTimestamps_codeFor: methodsWithTimestamp
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   710
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   711
    "
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   712
        stx_goodies_mondrian_core monticelloTimestamps_code
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   713
    "
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   714
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   715
    "Created: / 09-11-2010 / 18:23:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   716
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   717
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   718
!ProjectDefinition class methodsFor:'code generation'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   719
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   720
monticelloTimestamps_codeFor: methods
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   721
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   722
    | code |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   723
    code := String new writeStream.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   724
    code nextPutAll:'monticelloTimestamps
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   725
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   726
    ^#('.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   727
    methods do:[:mthd|
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   728
     code
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   729
        tab; tab; 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   730
        nextPut:$(;
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   731
        nextPutAll: mthd mclass fullName;
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   732
        space;
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   733
        nextPutAll: mthd selector;
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   734
        space;
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   735
        nextPutAll: (mthd annotationAt: #mctimestamp:) timestamp storeString;        
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   736
        nextPut:$); 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   737
        cr.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   738
    ].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   739
    code nextPutAll:'
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   740
    )'.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   741
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   742
    ^code contents
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   743
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   744
    "
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   745
        stx_goodies_mondrian_core mcTimestamps_code
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   746
    "
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   747
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   748
    "Created: / 09-11-2010 / 18:27:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   749
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   750
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   751
!SequenceableCollection methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   752
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   753
copyReplaceAll: oldSubstring with: newSubstring asTokens: ifTokens
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   754
        "Answer a copy of the receiver in which all occurrences of
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   755
        oldSubstring have been replaced by newSubstring.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   756
        ifTokens (valid for Strings only) specifies that the characters
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   757
        surrounding the recplacement must not be alphanumeric.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   758
                Bruce Simth,  must be incremented by 1 and not 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   759
        newSubstring if ifTokens is true.  See example below. "
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   760
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   761
        | aString startSearch currentIndex endIndex |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   762
        (ifTokens and: [(self isString) not])
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   763
                ifTrue: [(self isKindOf: Text) ifFalse: [
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   764
                        self error: 'Token replacement only valid for Strings']].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   765
        aString := self.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   766
        startSearch := 1.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   767
        [(currentIndex := aString indexOfSubCollection: oldSubstring startingAt: startSearch)
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   768
                         > 0]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   769
                whileTrue: 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   770
                [endIndex := currentIndex + oldSubstring size - 1.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   771
                (ifTokens not
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   772
                        or: [(currentIndex = 1
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   773
                                        or: [(aString at: currentIndex-1) isAlphaNumeric not])
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   774
                                and: [endIndex = aString size
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   775
                                        or: [(aString at: endIndex+1) isAlphaNumeric not]]])
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   776
                        ifTrue: [aString := aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   777
                                        copyReplaceFrom: currentIndex
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   778
                                        to: endIndex
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   779
                                        with: newSubstring.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   780
                                startSearch := currentIndex + newSubstring size]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   781
                        ifFalse: [
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   782
                                ifTokens 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   783
                                        ifTrue: [startSearch := currentIndex + 1]
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   784
                                        ifFalse: [startSearch := currentIndex + newSubstring size]]].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   785
        ^ aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   786
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   787
"Test case:
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   788
        'test te string' copyReplaceAll: 'te' with: 'longone' asTokens: true   "
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   789
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   790
    "Created: / 26-08-2009 / 12:40:34 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   791
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   792
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   793
!Smalltalk class methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   794
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   795
hasClassNamed:aString 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   796
    Symbol hasInterned:aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   797
        ifTrue:[:aSymbol | ^ (self at:aSymbol ifAbsent:[ nil ]) isKindOf:Class ].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   798
    ^ false
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   799
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   800
    "Created: / 26-08-2009 / 11:43:03 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   801
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   802
136
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   803
!Stream methodsFor:'*monticello'!
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   804
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   805
isMessageStream
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   806
	^ false
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   807
! !
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   808
395
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   809
!String methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   810
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   811
asStringWithNativeLineEndings
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   812
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   813
    ^self copyReplaceAll:Character return with: Character cr
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   814
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   815
    "Created: / 12-09-2010 / 16:00:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   816
    "Modified: / 13-10-2010 / 17:27:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   817
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   818
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   819
!String methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   820
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   821
asStringWithSqueakLineEndings
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   822
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   823
    ^self copyReplaceAll:Character cr with: Character return
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   824
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   825
    "Created: / 12-09-2010 / 16:00:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   826
    "Modified: / 13-10-2010 / 17:28:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   827
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   828
136
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   829
!String methodsFor:'*monticello'!
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   830
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   831
extractNumber
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   832
	^ ('0', self select: [:ea | ea isDigit]) asNumber
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   833
! !
6eea73c5dc65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 135
diff changeset
   834
395
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   835
!String methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   836
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   837
withSqueakLineEndings
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   838
        "Answer a copy of myself in which all sequences of <CR><LF> or <LF> have been changed to <CR>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   839
        | newText |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   840
        (self includes: Character lf) ifFalse: [ ^self copy ].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   841
        newText := self copyReplaceAll: String crlf with: String cr.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   842
        (newText asString includes: Character lf) ifFalse: [ ^newText ].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   843
        ^newText copyReplaceAll: String lf with: String cr asTokens: false.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   844
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   845
    "Created: / 26-08-2009 / 11:35:56 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   846
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   847
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   848
!StringCollection methodsFor:'converting'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   849
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   850
asStringWithNativeLineEndings
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   851
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   852
    ^self asString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   853
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   854
    "Created: / 12-09-2010 / 15:58:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   855
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   856
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   857
!StringCollection methodsFor:'converting'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   858
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   859
asStringWithSqueakLineEndings
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   860
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   861
    ^ self 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   862
        asStringWith:Character return
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   863
        from:1 to:(self size) 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   864
        compressTabs:false 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   865
        final:nil
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   866
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   867
    "Created: / 12-09-2010 / 15:58:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   868
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   869
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   870
!Symbol methodsFor:'*monticello-squeakCompatibility'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   871
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   872
isDoIt
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   873
    ^ (self == #DoIt) or:[ self == #DoItIn: ].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   874
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   875
    "Created: / 26-08-2009 / 11:46:44 / Jaroslav Havlin <havlij6@fel.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   876
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   877
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   878
!Time class methodsFor:'*monticello'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   879
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   880
fromString: aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   881
	^ self readFrom: (ReadStream on: aString).
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   882
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   883
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   884
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   885
!Timestamp class methodsFor:'*monticello-instance creation'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   886
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   887
fromMethodTimeStamp: aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   888
	| stream |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   889
	stream := ReadStream on: aString.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   890
	stream skipSeparators.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   891
	stream skipTo: Character space.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   892
	^self readFrom: stream.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   893
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   894
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   895
!Timestamp class methodsFor:'*monticello-instance creation'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   896
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   897
fromString: aString
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   898
	"Answer a new instance for the value given by aString.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   899
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   900
	 Timestamp fromString: '1-10-2000 11:55:00 am'. 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   901
	"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   902
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   903
	^self readFrom: (ReadStream on: aString).
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   904
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   905
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   906
!Timestamp class methodsFor:'*monticello-instance creation'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   907
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   908
readFrom: stream
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   909
	| date time |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   910
	stream skipSeparators.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   911
	date := Date readFrom: stream.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   912
	stream skipSeparators.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   913
	time := Time readFrom: stream.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   914
	^self 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   915
		date: date
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   916
		time: time
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   917
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   918
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   919
!Tools::NewSystemBrowser methodsFor:'menu actions-monticello'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   920
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   921
projectMenuMonticelloCommit
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   922
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   923
    | packageName package workingCopy |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   924
    packageName := self theSingleSelectedProject.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   925
    package := MCPackage named: packageName.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   926
    workingCopy := package workingCopy.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   927
    MCCommitDialog new
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   928
        workingCopy: workingCopy;
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   929
        open
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   930
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   931
    "Created: / 14-09-2010 / 22:54:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   932
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   933
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   934
!Tools::NewSystemBrowser class methodsFor:'menu specs-monticello'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   935
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   936
projectMonticelloMenu
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   937
    "This resource specification was automatically generated
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   938
     by the MenuEditor of ST/X."
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   939
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   940
    "Do not manually edit this!! If it is corrupted,
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   941
     the MenuEditor may not be able to read the specification."
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   942
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   943
    "
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   944
     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#projectMonticelloMenu
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   945
     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser projectMonticelloMenu)) startUp
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   946
    "
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   947
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   948
    <resource: #menu>
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   949
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   950
    ^ 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   951
     #(Menu
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   952
        (
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   953
         (MenuItem
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   954
            label: 'Commit'
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   955
            itemValue: projectMenuMonticelloCommit
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   956
            translateLabel: true
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   957
          )
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   958
         (MenuItem
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   959
            label: '-'
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   960
          )
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   961
         (MenuItem
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   962
            enabled: false
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   963
            label: 'Not yet finished...'
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   964
            translateLabel: true
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   965
          )
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   966
         )
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   967
        nil
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   968
        nil
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   969
      )
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   970
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   971
150
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   972
!UndefinedObject methodsFor:'* monticello'!
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   973
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   974
typeOfClass
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   975
    "Necessary to support disjoint class hierarchies."
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   976
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   977
    ^#normal
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   978
! !
Claus Gittinger <cg@exept.de>
parents: 136
diff changeset
   979
395
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   980
!UserPreferences methodsFor:'accessing-monticello'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   981
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   982
mcEnabled
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   983
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   984
    ^self at: #mcEnabled ifAbsent: [true].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   985
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   986
    "Created: / 16-09-2010 / 09:44:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   987
    "Modified: / 16-09-2010 / 14:50:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   988
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   989
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   990
!UserPreferences methodsFor:'accessing-monticello'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   991
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   992
mcEnabled: aBoolean
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   993
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   994
    self at: #mcEnabled put: aBoolean.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   995
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   996
    "Created: / 16-09-2010 / 09:44:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   997
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   998
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
   999
!UserPreferences methodsFor:'accessing-monticello'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1000
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1001
mcRepositories
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1002
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1003
    | repos |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1004
    repos := self at: #mcRepositories ifAbsent:[#()].
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1005
    ^repos decodeAsLiteralArray
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1006
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1007
    "
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1008
        self mcRepositories: #() 
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1009
    "
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1010
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1011
    "Created: / 16-09-2010 / 09:47:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1012
    "Modified: / 17-09-2010 / 11:45:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1013
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1014
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1015
!UserPreferences methodsFor:'accessing-monticello'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1016
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1017
mcRepositories: aCollection
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1018
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1019
    | repos |
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1020
    repos  := aCollection literalArrayEncoding.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1021
    self at: #mcRepositories put:repos.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1022
    MCRepositoryGroup default flushRepositories.
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1023
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1024
    "Created: / 16-09-2010 / 09:53:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1025
    "Modified: / 16-09-2010 / 13:56:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1026
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1027
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1028
!VersionInfo methodsFor:'accessing'!
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1029
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1030
timeStamp
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1031
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1032
    ^Timestamp
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1033
        fromDate: (Date fromString: date)
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1034
        andTime:  (Time fromString: time)
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1035
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1036
    "Created: / 09-09-2010 / 15:20:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1037
! !
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1038
182
Claus Gittinger <cg@exept.de>
parents: 160
diff changeset
  1039
!stx_goodies_monticello class methodsFor:'documentation'!
Claus Gittinger <cg@exept.de>
parents: 160
diff changeset
  1040
Claus Gittinger <cg@exept.de>
parents: 160
diff changeset
  1041
extensionsVersion_CVS
395
Claus Gittinger <cg@exept.de>
parents: 182
diff changeset
  1042
    ^ '$Header: /cvs/stx/stx/goodies/monticello/extensions.st,v 1.6 2011-08-20 14:19:25 cg Exp $'
182
Claus Gittinger <cg@exept.de>
parents: 160
diff changeset
  1043
! !