AbstractSourceFileWriter.st
changeset 11962 3303e65f30cd
child 12011 1c12ff1bc536
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AbstractSourceFileWriter.st	Thu Sep 17 16:14:08 2009 +0200
@@ -0,0 +1,103 @@
+"{ Package: 'stx:libbasic' }"
+
+Object subclass:#AbstractSourceFileWriter
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Kernel-Classes'
+!
+
+!AbstractSourceFileWriter class methodsFor:'documentation'!
+
+versionSVN
+
+    ^'$Id: AbstractSourceFileWriter.st,v 1.1 2009-09-17 14:14:08 fm Exp $'
+! !
+
+!AbstractSourceFileWriter methodsFor:'fileout'!
+
+fileOut:aClass on:outStreamArg 
+
+    self 
+        fileOut:aClass on:outStreamArg 
+        withTimeStamp:true withInitialize:true 
+        withDefinition:true 
+        methodFilter:nil encoder:nil
+
+    "Created: / 15-08-2009 / 13:11:31 / Jan Vrany <vranyj1@fel.cvut.cz>"
+! !
+
+!AbstractSourceFileWriter methodsFor:'source writing'!
+
+fileOut: class on:stream withTimeStamp: stampIt withInitialize: initIt withDefinition: withDefinition methodFilter:methodFilter encoder:encoderOrNil
+    "raise an error: must be redefined in concrete subclass(es)"
+
+    ^ self subclassResponsibility
+
+    "Modified: / 16-08-2009 / 09:59:49 / Jan Vrany <vranyj1@fel.cvut.cz>"
+! !
+
+!AbstractSourceFileWriter methodsFor:'source writing - comments'!
+
+fileOutComment: aStringOrStringCollection on: aStream
+
+    "
+        Writes a comment to a stream
+        using proper syntax
+    "
+    self fileOutCommentStartOn: aStream.
+    aStringOrStringCollection isStringCollection
+        ifTrue:
+            [aStringOrStringCollection 
+                do:[:line|self fileOutCommentLine: line on: aStream]
+                separatedBy: [aStream cr]]
+        ifFalse:
+            [(aStringOrStringCollection includes: Character cr)
+                ifTrue:"/hmm...multiline comment as string
+                    [aStringOrStringCollection asStringCollection
+                        do:[:line|self fileOutCommentLine: line on: aStream]
+                        separatedBy: [aStream cr]]
+                ifFalse:
+                    [self fileOutCommentLine: aStringOrStringCollection on: aStream]].
+    self fileOutCommentEndOn: aStream.
+
+    "Created: / 21-08-2009 / 09:36:03 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+fileOutCommentEndOn: aStream
+    "
+        Writes a comment end mark on aStream.
+    "
+
+    ^self subclassResponsibility
+
+    "Created: / 21-08-2009 / 09:40:42 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+fileOutCommentLine: aString on: aStream
+
+    "
+        Writes a single line of comment on a comment to a stream.
+        Should not put an cr to the stream!!
+    "
+
+    ^self subclassResponsibility
+
+    "Created: / 21-08-2009 / 09:42:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+fileOutCommentStartOn: aStream
+    "
+        Writes a comment start mark on aStream.
+    "
+
+    ^self subclassResponsibility
+
+    "Created: / 21-08-2009 / 09:40:28 / Jan Vrany <vranyj1@fel.cvut.cz>"
+! !
+
+!AbstractSourceFileWriter class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractSourceFileWriter.st,v 1.1 2009-09-17 14:14:08 fm Exp $'
+! !