MCStReader.st
author Claus Gittinger <cg@exept.de>
Tue, 11 Sep 2012 23:29:04 +0200
changeset 684 cb9dc3c18a9e
parent 520 3eed472bc1ad
child 796 730e50b519a0
permissions -rw-r--r--
category change
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
MCSnapshotReader subclass:#MCStReader
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:''
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
684
cb9dc3c18a9e category change
Claus Gittinger <cg@exept.de>
parents: 520
diff changeset
     7
	category:'SCM-Monticello-Chunk Format'
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCStReader class methodsFor:'as yet unclassified'!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
extension
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ 'st'
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
! !
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!MCStReader methodsFor:'as yet unclassified'!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
addDefinitionsFromDoit: aString
209
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    20
	| parser |
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    21
	(parser := MCDoItParser forDoit: aString) ifNotNil:
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    22
		[
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
		parser addDefinitionsTo: definitions]
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
categoryFromDoIt: aString
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
	| tokens  |
209
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    28
	tokens := Scanner new scanTokens: aString.
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	tokens size = 3 ifFalse: [self error: 'Unrecognized category definition'].
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	^ tokens at: 3
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
classDefinitionFrom: aPseudoClass
209
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    34
	| tokens traitCompositionString lastIndex classTraitCompositionString |
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    35
	tokens := Scanner new scanTokens: aPseudoClass definition.
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    36
	traitCompositionString := ((ReadStream on: aPseudoClass definition)
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    37
		match: 'uses:';
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    38
		upToAll: 'instanceVariableNames:') withBlanksTrimmed.
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    39
	classTraitCompositionString := ((ReadStream on: aPseudoClass metaClass definition asString)
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    40
		match: 'uses:';
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    41
		upToAll: 'instanceVariableNames:') withBlanksTrimmed.
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    42
	traitCompositionString isEmpty ifTrue: [traitCompositionString := '{}'].
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    43
	classTraitCompositionString isEmpty ifTrue: [classTraitCompositionString := '{}'].
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    44
	lastIndex := tokens size.
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
	^ MCClassDefinition
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
		name: (tokens at: 3)
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
		superclassName: (tokens at: 1)
209
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    48
		traitComposition: traitCompositionString
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    49
		classTraitComposition: classTraitCompositionString
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    50
		category: (tokens at: lastIndex)
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    51
		instVarNames: ((tokens at: lastIndex - 6) findTokens: ' ')
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    52
		classVarNames: ((tokens at: lastIndex - 4) findTokens: ' ')
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    53
		poolDictionaryNames: ((tokens at: lastIndex - 2) findTokens: ' ')
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
		classInstVarNames: (self classInstVarNamesFor: aPseudoClass)
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
		type: (self typeOfSubclass: (tokens at: 2))
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
		comment: (self commentFor: aPseudoClass)
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
		commentStamp: (self commentStampFor: aPseudoClass)
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
classInstVarNamesFor: aPseudoClass
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
	| tokens |
209
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    62
	
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    63
	self flag: #traits.
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
	aPseudoClass metaClass hasDefinition ifFalse: [^ #()].
209
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    65
	tokens := Scanner new scanTokens: aPseudoClass metaClass definition.
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    66
	"tokens size = 4 ifFalse: [self error: 'Unrecognized metaclass definition']."
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	^ tokens last findTokens: ' '
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
commentFor: aPseudoClass
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	| comment |
209
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    72
	comment := aPseudoClass organization classComment.
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
	^ comment asString = ''
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
		ifTrue: [comment]
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
		ifFalse: [comment string]
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
commentStampFor: aPseudoClass
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
	| comment |
209
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    80
	comment := aPseudoClass organization classComment.
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
	^  [comment stamp] on: MessageNotUnderstood do: [nil]
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
methodDefinitionsFor: aPseudoClass
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
	^ aPseudoClass selectors collect: 
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
		[:ea |
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
		 MCMethodDefinition
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
			className: aPseudoClass name
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
			classIsMeta: aPseudoClass isMeta
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
			selector: ea
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
			category: (aPseudoClass organization categoryOfElement: ea)
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
			timeStamp: (aPseudoClass stampAt: ea)
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
			source: (aPseudoClass sourceCodeAt: ea)]
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
systemOrganizationFromRecords: changeRecords
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
	| categories |
209
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
    98
	categories := changeRecords
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
					select: [:ea | 'SystemOrganization*' match: ea string]
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
					thenCollect: [:ea | (self categoryFromDoIt: ea string)].
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
	^ categories isEmpty ifFalse: [MCOrganizationDefinition categories: categories asArray]
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
typeOfSubclass: aSymbol
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
	#(
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
		(subclass: normal)
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
		(variableSubclass: variable)
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
		(variableByteSubclass: bytes)
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
		(variableWordSubclass: words)
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
		(weakSubclass: weak)
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
		) do: [:ea | ea first = aSymbol ifTrue: [^ ea second]].
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
	self error: 'Unrecognized class definition'
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
! !
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
!MCStReader methodsFor:'evaluating'!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
loadDefinitions
519
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   118
    |changeList|
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   119
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   120
    definitions := OrderedCollection new.
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   121
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   122
    Smalltalk isSmalltalkX ifTrue:[
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   123
        changeList := ChangeSet fromStream:self readStream.
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   124
        changeList do:[:eachChange |
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   125
            |dfn|
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   126
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   127
            self addDefinitionFromChange:eachChange.
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   128
        ].
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   129
    ] ifFalse:[
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   130
        | filePackage |
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   131
        filePackage :=
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   132
                FilePackage new
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   133
                        fullName: 'ReadStream';
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   134
                        fileInFrom: self readStream.
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   135
        filePackage classes do:
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   136
                [:pseudoClass |
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   137
                pseudoClass hasDefinition
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   138
                        ifTrue: [definitions add:
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   139
                                        (self classDefinitionFrom: pseudoClass)].
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   140
                definitions addAll: (self methodDefinitionsFor: pseudoClass).
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   141
                definitions addAll: (self methodDefinitionsFor: pseudoClass metaClass)].
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   142
        filePackage doIts do:
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   143
                [:ea |
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   144
                self addDefinitionsFromDoit: ea string].
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   145
    ]
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   146
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   147
    "Modified: / 25-11-2011 / 17:23:48 / cg"
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
readStream
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
	^ ('!!!!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
', stream contents) readStream
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
! !
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
519
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   156
!MCStReader methodsFor:'stx change conversion'!
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   157
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   158
addDefinitionFromChange:aChange
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   159
    aChange acceptChangeVisitor:self.
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   160
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   161
    "Created: / 25-11-2011 / 17:24:08 / cg"
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   162
!
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   163
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   164
visitClassDefinitionChange:aChange
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   165
        | tokens traitCompositionString lastIndex classTraitCompositionString |
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   166
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   167
        tokens := Scanner new scanTokens: aChange source.
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   168
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   169
"/        traitCompositionString := ((ReadStream on: aChange source)
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   170
"/                match: 'uses:';
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   171
"/                upToAll: 'instanceVariableNames:') withBlanksTrimmed.
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   172
"/        classTraitCompositionString := ((ReadStream on: aPseudoClass metaClass definition asString)
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   173
"/                match: 'uses:';
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   174
"/                upToAll: 'instanceVariableNames:') withBlanksTrimmed.
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   175
        traitCompositionString isEmptyOrNil ifTrue: [traitCompositionString := '{}'].
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   176
        classTraitCompositionString isEmptyOrNil ifTrue: [classTraitCompositionString := '{}'].
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   177
        lastIndex := tokens size.
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   178
        definitions add:( MCClassDefinition
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   179
                name: aChange className "/ (tokens at: 3)
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   180
                superclassName: aChange superClassName "/ (tokens at: 1)
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   181
                traitComposition: traitCompositionString
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   182
                classTraitComposition: classTraitCompositionString
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   183
                category: aChange category "/ (tokens at: lastIndex)
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   184
                instVarNames: aChange instanceVariableNames asCollectionOfWords "/ ((tokens at: lastIndex - 6) findTokens: ' ')
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   185
                classVarNames: aChange classVariableNames asCollectionOfWords "/ ((tokens at: lastIndex - 4) findTokens: ' ')
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   186
                poolDictionaryNames: aChange poolDictionaries asCollectionOfWords "/ ((tokens at: lastIndex - 2) findTokens: ' ')
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   187
                classInstVarNames: (aChange classInstanceVariableNames ? '') asCollectionOfWords "/ (self classInstVarNamesFor: aPseudoClass)
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   188
                type: (self typeOfSubclass: (tokens at: 2))
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   189
                comment: nil "/ (self commentFor: aPseudoClass)
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   190
                commentStamp: nil "/ (self commentStampFor: aPseudoClass)
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   191
            )
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   192
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   193
    "Created: / 25-11-2011 / 17:20:41 / cg"
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   194
!
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   195
520
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   196
visitClassInstVarDefinitionChange:aChange
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   197
    "there must be already a definition change for that class"
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   198
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   199
    |nonMetaName defn|
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   200
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   201
    self assert:(aChange className endsWith:' class').
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   202
    nonMetaName := aChange className copyWithoutLast:' class' size.
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   203
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   204
    defn := definitions detectLast:[:def | def isClassDefinition and:[def className = nonMetaName]].
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   205
    defn classInstVarNames: (aChange classInstVarNames).
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   206
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   207
    "Created: / 25-11-2011 / 17:32:12 / cg"
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   208
!
3eed472bc1ad category of: #visitClassInstVarDefinitionChange:
Claus Gittinger <cg@exept.de>
parents: 519
diff changeset
   209
519
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   210
visitDoItChange:aChange
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   211
    self addDefinitionsFromDoit: aChange source
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   212
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   213
    "Created: / 25-11-2011 / 17:15:21 / cg"
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   214
!
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   215
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   216
visitMethodChange:aChange
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   217
    definitions add:(MCMethodDefinition
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   218
                        className: aChange className
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   219
                        classIsMeta: aChange isForMeta
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   220
                        selector: aChange changeSelector
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   221
                        category: aChange category "/ (aPseudoClass organization categoryOfElement: ea)
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   222
                        timeStamp: nil "aChange timeStamp" "/ (aPseudoClass stampAt: ea)
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   223
                        source: aChange source "/ (aPseudoClass sourceCodeAt: ea)
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   224
                    )
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   225
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   226
    "Created: / 25-11-2011 / 17:15:36 / cg"
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   227
! !
e37a78e3a3da changeset reading
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   228
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
!MCStReader class methodsFor:'documentation'!
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
version
684
cb9dc3c18a9e category change
Claus Gittinger <cg@exept.de>
parents: 520
diff changeset
   232
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStReader.st,v 1.6 2012-09-11 21:29:04 cg Exp $'
209
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
   233
!
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
   234
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
   235
version_CVS
684
cb9dc3c18a9e category change
Claus Gittinger <cg@exept.de>
parents: 520
diff changeset
   236
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStReader.st,v 1.6 2012-09-11 21:29:04 cg Exp $'
209
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
   237
!
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
   238
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
   239
version_SVN
780f37190c97 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 41
diff changeset
   240
    ^ '§Id: MCStReader.st 17 2010-10-13 12:07:52Z vranyj1 §'
41
7bf947de2da2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
! !