MCStWriter.st
author Claus Gittinger <cg@exept.de>
Sat, 20 Aug 2011 13:42:04 +0200
changeset 197 833c1cc5eafd
parent 143 d7354b2599b6
child 284 1149d058c87d
permissions -rw-r--r--
added: #version_CVS
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
MCWriter subclass:#MCStWriter
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'initStream'
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Monticello-Chunk Format'
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCStWriter class methodsFor:'as yet unclassified'!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
readerClass
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ MCStReader
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
! !
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!MCStWriter methodsFor:'visiting'!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
visitClassDefinition: definition
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	self writeClassDefinition: definition.
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	definition hasClassInstanceVariables ifTrue: [self writeMetaclassDefinition: definition].
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	definition hasComment ifTrue: [self writeClassComment: definition].
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
197
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    25
visitClassTraitDefinition: definition
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    26
	self chunkContents: [:s | s
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    27
		nextPutAll: definition baseTrait;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    28
		nextPutAll: ' classTrait';
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    29
		cr; tab;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    30
		nextPutAll: 'uses: ';
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    31
		nextPutAll: (definition classTraitComposition ifNil: ['{}'])]
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    32
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    33
!
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    34
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    35
visitMetaclassDefinition: definition
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    36
	self writeMetaclassDefinition: definition
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    37
!
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    38
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
visitMethodDefinition: definition
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
	self writeMethodPreamble: definition.
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
	self writeMethodSource: definition.
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
	self writeMethodPostscript.
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
	self writeMethodInitializer: definition.
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
visitOrganizationDefinition: defintion
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	defintion categories do: [:cat | self writeCategory: cat].
197
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    48
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    49
!
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    50
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    51
visitTraitDefinition: definition
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    52
	self writeClassDefinition: definition.
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    53
	definition hasComment ifTrue: [self writeClassComment: definition].
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
! !
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
!MCStWriter methodsFor:'writing'!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
chunkContents: aBlock
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
	stream cr; nextChunkPut: (String streamContents: aBlock); cr
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
writeCategory: categoryName
197
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    63
        stream
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    64
                nextChunkPut: 'SystemOrganization addCategory: ', categoryName storeString;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    65
                cr
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    66
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    67
    "Modified: / 12-09-2010 / 15:36:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
writeClassComment: definition
197
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    71
        stream
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    72
                cr;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    73
                nextPut: $!!;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    74
                nextPutAll: definition className;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    75
                nextPutAll: ' commentStamp: ';
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    76
                store: definition commentStamp;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    77
                nextPutAll: ' prior: 0!!';
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    78
                cr;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    79
                nextChunkPut: definition comment ? '';
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    80
                cr.
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    81
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    82
    "Modified: / 12-09-2010 / 17:05:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
writeClassDefinition: definition
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
	self chunkContents: [:s | definition printDefinitionOn: stream]
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
writeDefinitions: aCollection
197
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    90
	"initStream is an ugly hack until we have proper init defs"
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    91
	initStream := String new writeStream.
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
197
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    93
	(MCDependencySorter sortItems: aCollection)
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    94
		do: [:ea | ea accept: self]
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    95
		displayingProgress: 'Writing definitions...'.
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    96
	
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
    97
	stream nextPutAll: initStream contents.
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
writeMetaclassDefinition: definition
197
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   101
	self chunkContents: [:str |
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   102
		str	nextPutAll: definition className;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   103
			nextPutAll: ' class';
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   104
			cr; tab.
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   105
			definition hasClassTraitComposition ifTrue: [
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   106
				str	nextPutAll: 'uses: ';
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   107
					nextPutAll: definition classTraitCompositionString;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   108
					cr; tab].
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   109
			str	nextPutAll: 'instanceVariableNames: ''';
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   110
				nextPutAll: definition classInstanceVariablesString;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   111
				nextPut: $']
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
writeMethodInitializer: aMethodDefinition
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
	aMethodDefinition isInitializer ifTrue:
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
		[initStream nextChunkPut: aMethodDefinition className, ' initialize'; cr]
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
writeMethodPostscript
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
	stream
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
		space;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
		nextPut: $!!;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
		cr
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
writeMethodPreamble: definition
197
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   127
        stream
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   128
                cr;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   129
                nextPut: $!!;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   130
                nextPutAll: definition fullClassName;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   131
                nextPutAll: ' methodsFor: ';
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   132
                nextPutAll: definition category asString storeString;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   133
                nextPutAll: ' stamp: ';
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   134
                nextPutAll: definition timeStamp asString storeString;
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   135
                nextPutAll: '!!';
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   136
                cr
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   137
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   138
    "Modified: / 12-09-2010 / 15:39:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
writeMethodSource: definition
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
	stream nextChunkPut: definition source
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
writeSnapshot: aSnapshot
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
	self writeDefinitions: aSnapshot definitions
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
! !
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
!MCStWriter class methodsFor:'documentation'!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
197
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   151
version_CVS
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   152
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStWriter.st,v 1.3 2011-08-20 11:42:04 cg Exp $'
143
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
   153
!
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
   154
197
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   155
version_SVN
833c1cc5eafd added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 143
diff changeset
   156
    ^ '§Id: MCStWriter.st 8 2010-09-12 17:15:52Z vranyj1 §'
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
! !