MCReader.st
author Claus Gittinger <cg@exept.de>
Tue, 11 Sep 2012 23:26:02 +0200
changeset 671 df24827ee731
parent 523 532a829480f4
child 966 1819c104488d
permissions -rw-r--r--
category change
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:''
671
df24827ee731 category change
Claus Gittinger <cg@exept.de>
parents: 523
diff changeset
     7
	category:'SCM-Monticello-Storing'
34
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
523
532a829480f4 added: #classInstVarNames:
Claus Gittinger <cg@exept.de>
parents: 359
diff changeset
    13
on: aStringOrStream
532a829480f4 added: #classInstVarNames:
Claus Gittinger <cg@exept.de>
parents: 359
diff changeset
    14
        ^ self new stream: aStringOrStream readStream
532a829480f4 added: #classInstVarNames:
Claus Gittinger <cg@exept.de>
parents: 359
diff changeset
    15
532a829480f4 added: #classInstVarNames:
Claus Gittinger <cg@exept.de>
parents: 359
diff changeset
    16
    "Modified: / 25-11-2011 / 16:57:41 / cg"
34
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
on: aStream name: aFileName
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	| class |
237
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    21
	class := self readerClassForFileNamed: aFileName.
34
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
		ifNil: [self error: 'Unsupported format: ', aFileName]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
		ifNotNil: [class on: aStream]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
! !
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
!MCReader class methodsFor:'testing'!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
canReadFileNamed: fileName
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	^ (fileName endsWith: self extension)
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
concreteSubclasses
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	^ self allSubclasses reject: [:c | c isAbstract]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
isAbstract
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
	^ (self respondsTo: #extension) not
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
readerClassForFileNamed: fileName
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
	^ self concreteSubclasses
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
		detect: [:c | c canReadFileNamed: fileName]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
		ifNone: [nil]
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
! !
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
!MCReader methodsFor:'accessing'!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
stream: aStream
237
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    50
	stream := aStream
34
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
! !
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
!MCReader class methodsFor:'documentation'!
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
version
671
df24827ee731 category change
Claus Gittinger <cg@exept.de>
parents: 523
diff changeset
    56
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCReader.st,v 1.5 2012-09-11 21:26:02 cg Exp $'
237
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    57
!
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    58
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    59
version_CVS
671
df24827ee731 category change
Claus Gittinger <cg@exept.de>
parents: 523
diff changeset
    60
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCReader.st,v 1.5 2012-09-11 21:26:02 cg Exp $'
237
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    61
!
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    62
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    63
version_SVN
5c5f45164b94 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 34
diff changeset
    64
    ^ '§Id: MCReader.st 5 2010-08-29 07:30:29Z vranyj1 §'
34
5391d707aa3d initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
! !