MCReader.st
author Claus Gittinger <cg@exept.de>
Wed, 22 Nov 2006 14:05:12 +0100
changeset 34 5391d707aa3d
child 237 5c5f45164b94
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#MCReader
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'stream'
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Monticello-Storing'
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCReader class methodsFor:'instance creation'!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
new
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ self basicNew initialize
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
on: aStream
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	^ self new stream: aStream
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
on: aStream name: aFileName
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	| class |
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	class _ self readerClassForFileNamed: aFileName.
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	^ class
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
		ifNil: [self error: 'Unsupported format: ', aFileName]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
		ifNotNil: [class on: aStream]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
! !
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
!MCReader class methodsFor:'testing'!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
canReadFileNamed: fileName
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	^ (fileName endsWith: self extension)
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
concreteSubclasses
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
	^ self allSubclasses reject: [:c | c isAbstract]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
isAbstract
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
	^ (self respondsTo: #extension) not
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
readerClassForFileNamed: fileName
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
	^ self concreteSubclasses
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
		detect: [:c | c canReadFileNamed: fileName]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
		ifNone: [nil]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
! !
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
!MCReader methodsFor:'accessing'!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
stream: aStream
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	stream _ aStream
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
! !
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
!MCReader methodsFor:'lifecycle'!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
initialize
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
! !
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
!MCReader class methodsFor:'documentation'!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
version
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCReader.st,v 1.1 2006-11-22 13:05:12 cg Exp $'
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
! !