Base64Coder.st
changeset 4507 e85ee316a1b2
parent 4279 bb907803ee15
child 4520 d2ea4e714e1f
--- a/Base64Coder.st	Tue Aug 22 20:35:21 2017 +0200
+++ b/Base64Coder.st	Sat Aug 26 12:41:32 2017 +0200
@@ -76,25 +76,6 @@
                                                                 [exEnd]
 
                                                                 [exBegin]
-   0 to:16 do:[:l |
-        |coder decoder data encoding decoded|
-
-        data := (0 to:l) asByteArray copyTo:l.
-        coder := Base64Coder on:'' writeStream.
-        coder nextPutAll:data.
-        coder flush.
-
-        encoding := coder contents.
-
-        decoder := Base64Coder on:encoding readStream.
-        decoded := decoder upToEnd.
-        Transcript showCR:(data printString).
-        Transcript show:' -> '; showCR:encoding.
-        Transcript show:' ---> '; showCR:(decoded printString).
-        self assert:(data = decoded).
-   ].
-                                                                [exEnd]
-                                                                [exBegin]
    |data1 text data2|
 
    data1 := #[0 1 16r7F 16r80 16r81 16rFE 16rFF].
@@ -164,7 +145,11 @@
 nextPutByte:aByte
     "encode aByte on the output stream"
 
-    |b1 b2 b3 b4|
+    |b1 "{ Class: SmallInteger }"
+     b2 "{ Class: SmallInteger }" 
+     b3 "{ Class: SmallInteger }"
+     b4 "{ Class: SmallInteger }" 
+     bufferedBytes "{ Class: SmallInteger }" |
 
     buffer := (buffer bitShift:8) bitOr:aByte.
     bits := bits + 8.
@@ -174,12 +159,14 @@
             stream cr.
             charCount := 0.
         ].
-
-        b4 := buffer bitAnd:16r3F.
-        b3 := (buffer bitShift:-6)  bitAnd:16r3F.
-        b2 := (buffer bitShift:-12) bitAnd:16r3F.
-        b1 := (buffer bitShift:-18) bitAnd:16r3F.
+        bufferedBytes := buffer.
+        
+        b4 := bufferedBytes bitAnd:16r3F.
+        b3 := (bufferedBytes bitShift:-6)  bitAnd:16r3F.
+        b2 := (bufferedBytes bitShift:-12) bitAnd:16r3F.
+        b1 := (bufferedBytes bitShift:-18) bitAnd:16r3F.
         buffer := bits := 0.
+        
         stream nextPut:(Base64Mapping at:b1+1);
                nextPut:(Base64Mapping at:b2+1);
                nextPut:(Base64Mapping at:b3+1);
@@ -187,6 +174,8 @@
 
         charCount := charCount + 4.
     ].
+
+    "Modified: / 26-08-2017 / 12:35:17 / cg"
 ! !
 
 !Base64Coder methodsFor:'misc'!