MCStWriter.st
author Claus Gittinger <cg@exept.de>
Mon, 26 Oct 2009 16:25:23 +0100
changeset 143 d7354b2599b6
parent 42 df170417877c
child 197 833c1cc5eafd
permissions -rw-r--r--
more porting (but still unfinished)
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
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
visitMethodDefinition: definition
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
	self writeMethodPreamble: definition.
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
	self writeMethodSource: definition.
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	self writeMethodPostscript.
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	self writeMethodInitializer: definition.
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
visitOrganizationDefinition: defintion
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	defintion categories do: [:cat | self writeCategory: cat].
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
! !
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
!MCStWriter methodsFor:'writing'!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
chunkContents: aBlock
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	stream cr; nextChunkPut: (String streamContents: aBlock); cr
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
writeCategory: categoryName
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
	stream
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
		nextChunkPut: 'SystemOrganization addCategory: ', categoryName printString;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
		cr
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
writeClassComment: definition
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
	stream
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
		cr;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
		nextPut: $!!;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
		nextPutAll: definition className;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
		nextPutAll: ' commentStamp: ';
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
		store: definition commentStamp;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
		nextPutAll: ' prior: 0!!';
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
		cr;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
		nextChunkPut: definition comment;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
		cr.
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
writeClassDefinition: definition
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
	self chunkContents: [:s | definition printDefinitionOn: stream]
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
writeDefinitions: aCollection
143
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
    66
        "initStream is an ugly hack until we have proper init defs"
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
    67
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
    68
        initStream := String new writeStream.
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
143
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
    70
        Smalltalk isSmalltalkX ifTrue:[
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
    71
            (MCDependencySorter sortItems: aCollection)
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
    72
                do: [:ea | ea accept: self]
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
    73
        ] ifFalse:[
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
    74
            (MCDependencySorter sortItems: aCollection)
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
    75
                do: [:ea | ea accept: self]
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
    76
                displayingProgress: 'Writing definitions...'.
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
    77
        ].        
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
    78
        stream nextPutAll: initStream contents.
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
writeMetaclassDefinition: definition
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
	self chunkContents: [:s | s
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
		nextPutAll: definition className;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
		nextPutAll: ' class';
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
		cr; tab;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
		nextPutAll: 'instanceVariableNames: ''';
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
		nextPutAll: definition classInstanceVariablesString;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
		nextPut: $'.
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
	]
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
writeMethodInitializer: aMethodDefinition
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
	aMethodDefinition isInitializer ifTrue:
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
		[initStream nextChunkPut: aMethodDefinition className, ' initialize'; cr]
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
writeMethodPostscript
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
	stream
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
		space;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
		nextPut: $!!;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
		cr
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
writeMethodPreamble: definition
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
	stream
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
		cr;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
		nextPut: $!!;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
		nextPutAll: definition fullClassName;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
		nextPutAll: ' methodsFor: ';
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
		nextPutAll: definition category asString printString;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
		nextPutAll: ' stamp: ';
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
		nextPutAll: definition timeStamp asString printString;
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
		nextPutAll: '!!';
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
		cr
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
writeMethodSource: definition
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
	stream nextChunkPut: definition source
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
writeSnapshot: aSnapshot
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
	self writeDefinitions: aSnapshot definitions
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
! !
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
!MCStWriter class methodsFor:'documentation'!
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
version
143
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
   128
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStWriter.st,v 1.2 2009-10-26 15:25:23 cg Exp $'
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
   129
!
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
   130
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
   131
version_CVS
d7354b2599b6 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 42
diff changeset
   132
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCStWriter.st,v 1.2 2009-10-26 15:25:23 cg Exp $'
42
df170417877c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
! !