Encoder_CompoundEncoder.st
author Claus Gittinger <cg@exept.de>
Fri, 05 Mar 2004 18:28:27 +0100
changeset 8081 b468050174a9
permissions -rw-r--r--
initial checkin

"{ Encoding: utf8 }"

"{ Package: 'stx:libbasic' }"

"{ NameSpace: CharacterEncoderImplementations }"

CharacterEncoder subclass:#CompoundEncoder
	instanceVariableNames:'decoder encoder'
	classVariableNames:''
	poolDictionaries:''
	category:'Collections-Text-Encodings'
!

!CompoundEncoder class methodsFor:'documentation'!

documentation
"
    A compoundEncoder uses two real encoders;
    to encode:
        string -> decoder(encode) -> encoder -> result
    to decode:
        string -> encoder -> decoder -> result

    |e|

    e := CompoundEncoder new.
    e encoder:ISO8859_5 decoder:KOI8_R.
    e decode:16rB0.  'CYRILLIC CAPITAL LETTER A; 16rB0 in 8859-5; 16rE1 in KOI8-R'.
    e encode:16rE1.  
"
! !

!CompoundEncoder methodsFor:'accessing'!

encoder:encoderArg decoder:decoderArg  
    "set instance variables (automatically generated)"

    decoder := decoderArg.
    encoder := encoderArg.
! !

!CompoundEncoder methodsFor:'encoding & decoding'!

decode:aCode
    ^ decoder encode:(encoder decode:aCode)
!

decodeString:aString
    ^ decoder encodeString:(encoder decodeString:aString)
!

encode:aCode
    ^ encoder encode:(decoder decode:aCode)
!

encodeString:aString
    ^ encoder encodeString:(decoder decodeString:aString)
! !

!CompoundEncoder methodsFor:'printing'!

printOn:aStream
    aStream 
        nextPutAll:(decoder nameOfEncoding);
        nextPutAll:'->'.
"/        nextPutAll:(decoder nameOfDecodedCode);
"/        nextPutAll:'->';
"/        nextPutAll:(encoder nameOfEncoding)
    encoder printOn:aStream
! !

!CompoundEncoder class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/libbasic/Attic/Encoder_CompoundEncoder.st,v 1.1 2004-03-05 17:20:32 cg Exp $'
! !