! See http://factorcode.org/license.txt for BSD license.
USING: combinators io io.binary io.encodings.binary
io.streams.byte-array kernel math namespaces
-sequences strings io.crlf ;
+sequences strings ;
IN: base64
ERROR: malformed-base64 ;
: write1-lines ( ch -- )
write1
column get [
- 1 + [ 76 = [ crlf ] when ]
+ 1 + [ 76 = [ B{ CHAR: \r CHAR: \n } write ] when ]
[ 76 mod column set ] bi
] when* ;
: encode3 ( seq -- )
be> 4 iota <reversed> [
- -6 * shift HEX: 3f bitand ch>base64 write1-lines
+ -6 * shift 0x3f bitand ch>base64 write1-lines
] with each ; inline
: encode-pad ( seq n -- )