MCReader.st
author Claus Gittinger <cg@exept.de>
Sat, 20 Aug 2011 14:30:13 +0200
changeset 359 20ba1641d8ff
parent 237 5c5f45164b94
child 523 532a829480f4
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
on: aStream
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ self new stream: aStream
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 name: aFileName
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	| class |
237
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    19
	class := self readerClassForFileNamed: aFileName.
34
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	^ class
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
		ifNil: [self error: 'Unsupported format: ', aFileName]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
		ifNotNil: [class on: aStream]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
! !
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!MCReader class methodsFor:'testing'!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
canReadFileNamed: fileName
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	^ (fileName endsWith: self extension)
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
concreteSubclasses
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	^ self allSubclasses reject: [:c | c isAbstract]
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
isAbstract
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
	^ (self respondsTo: #extension) not
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
readerClassForFileNamed: fileName
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
	^ self concreteSubclasses
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
		detect: [:c | c canReadFileNamed: fileName]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
		ifNone: [nil]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
! !
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
!MCReader methodsFor:'accessing'!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
stream: aStream
237
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    48
	stream := aStream
34
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
! !
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
!MCReader class methodsFor:'documentation'!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
version
359
20ba1641d8ff initial checkin
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
    54
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCReader.st,v 1.3 2011-08-20 12:30:13 cg Exp $'
237
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    55
!
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    56
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    57
version_CVS
359
20ba1641d8ff initial checkin
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
    58
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCReader.st,v 1.3 2011-08-20 12:30:13 cg Exp $'
237
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    59
!
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    60
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    61
version_SVN
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    62
    ^ '§Id: MCReader.st 5 2010-08-29 07:30:29Z vranyj1 §'
34
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
! !