support/Xtreams__Encoder.st
author mkobetic
Mon, 16 Jan 2012 05:55:04 +0000
changeset 57 83d1a5856145
parent 53 3a3d798e73b5
child 65 aff5693f0c35
permissions -rw-r--r--
interpreting

'From Smalltalk/X, Version:6.2.1 on 16-01-2012 at 12:55:21 AM'                  !

"{ 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
!

decodeFrom: aReadStream

	^self subclassResponsibility
!

encode: aCharacter on: aWriteStream

	^self subclassResponsibility
!

restoreState
!

streamingAsEncoder

	^self
! !

!Encoder class methodsFor:'documentation'!

version_SVN
    ^ '$Id$'
! !