--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Encoder_TwoStepEncoder.st Fri Mar 05 18:14:28 2004 +0100
@@ -0,0 +1,68 @@
+"{ Encoding: utf8 }"
+
+"{ Package: 'stx:libbasic' }"
+
+"{ NameSpace: CharacterEncoderImplementations }"
+
+CharacterEncoder subclass:#TwoStepEncoder
+ instanceVariableNames:'encoder1 encoder2'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Collections-Text-Encodings'
+!
+
+!TwoStepEncoder class methodsFor:'documentation'!
+
+documentation
+"
+ A twoStepEncoder uses two real encoders;
+ to encode:
+ string -> encoder1(encode) -> encoder2(encode) -> result
+ to decode:
+ string -> encoder2(decode) -> encoder1(decode) -> result
+"
+! !
+
+!TwoStepEncoder methodsFor:'accessing'!
+
+encoder1:encoder1Arg encoder2:encoder2Arg
+ "set instance variables (automatically generated)"
+
+ encoder1 := encoder1Arg.
+ encoder2 := encoder2Arg.
+! !
+
+!TwoStepEncoder methodsFor:'encoding & decoding'!
+
+decode:aCode
+ ^ encoder1 decode:(encoder2 decode:aCode)
+!
+
+decodeString:aString
+ ^ encoder1 decodeString:(encoder2 decodeString:aString)
+!
+
+encode:aCode
+ ^ encoder2 encode:(encoder1 encode:aCode)
+!
+
+encodeString:aString
+ ^ encoder2 encodeString:(encoder1 encodeString:aString)
+! !
+
+!TwoStepEncoder methodsFor:'printing'!
+
+printOn:aStream
+ aStream
+ nextPutAll:(encoder1 nameOfDecodedCode);
+ nextPutAll:'->';
+ nextPutAll:(encoder1 nameOfEncoding);
+ nextPutAll:'->';
+ nextPutAll:(encoder2 nameOfEncoding)
+! !
+
+!TwoStepEncoder class methodsFor:'documentation'!
+
+version
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/Encoder_TwoStepEncoder.st,v 1.1 2004-03-05 17:12:09 cg Exp $'
+! !