"{ Package: 'stx:goodies/xtreams/support' }"
"{ NameSpace: Xtreams }"
Object subclass:#Encoder
instanceVariableNames:''
classVariableNames:'DialectEncoder Encoders'
poolDictionaries:''
category:'Xtreams-Support'
!
Encoder comment:'Abstract character encoder class defines the API and maintains a registry of known encoders (Encoders). Also provides a hook to allow plugging in dialect specific encoders (DialectEncoder) as a secondary encoder resource.
Shared Variables
DialectEncoder <Class> optional dialect specific encoder class providing support for additional encodings
Encoders <Dictionary key: Symbol value: Class> maps encoding names to encoders
'
!
!Encoder class methodsFor:'instance creation'!
for: anEncoding
anEncoding isSymbol ifFalse: [ ^anEncoding streamingAsEncoder ].
^Encoders at: anEncoding ifAbsent: [
DialectEncoder
ifNil: [ self error: 'Unknown encoding!!' ]
ifNotNil: [ DialectEncoder for: anEncoding ] ]
!
streamingAsEncoder
^self new
! !
!Encoder class methodsFor:'accessing'!
encoders
^Encoders ifNil: [ Encoders := IdentityDictionary new ]
! !
!Encoder methodsFor:'accessing'!
backupState
!
contentsSpecies
^String
!
decodeFrom: aReadStream
^self subclassResponsibility
!
encode: aCharacter on: aWriteStream
^self subclassResponsibility
!
restoreState
!
streamingAsEncoder
^self
! !
!Encoder class methodsFor:'documentation'!
version_SVN
^ '$Id$'
! !