MCReader.st
changeset 34 5391d707aa3d
child 237 5c5f45164b94
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MCReader.st	Wed Nov 22 14:05:12 2006 +0100
@@ -0,0 +1,64 @@
+"{ Package: 'stx:goodies/monticello' }"
+
+Object subclass:#MCReader
+	instanceVariableNames:'stream'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Monticello-Storing'
+!
+
+
+!MCReader class methodsFor:'instance creation'!
+
+new
+	^ self basicNew initialize
+!
+
+on: aStream
+	^ self new stream: aStream
+!
+
+on: aStream name: aFileName
+	| class |
+	class _ self readerClassForFileNamed: aFileName.
+	^ class
+		ifNil: [self error: 'Unsupported format: ', aFileName]
+		ifNotNil: [class on: aStream]
+! !
+
+!MCReader class methodsFor:'testing'!
+
+canReadFileNamed: fileName
+	^ (fileName endsWith: self extension)
+!
+
+concreteSubclasses
+	^ self allSubclasses reject: [:c | c isAbstract]
+!
+
+isAbstract
+	^ (self respondsTo: #extension) not
+!
+
+readerClassForFileNamed: fileName
+	^ self concreteSubclasses
+		detect: [:c | c canReadFileNamed: fileName]
+		ifNone: [nil]
+! !
+
+!MCReader methodsFor:'accessing'!
+
+stream: aStream
+	stream _ aStream
+! !
+
+!MCReader methodsFor:'lifecycle'!
+
+initialize
+! !
+
+!MCReader class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCReader.st,v 1.1 2006-11-22 13:05:12 cg Exp $'
+! !