--- /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 $'
+! !