Encoder_TwoStepEncoder.st
changeset 8079 0c51c515c6b6
--- /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 $'
+! !