io.encodings.utf16: cleanup
parent
cdf5cff3a6
commit
2d71c8d993
|
@ -59,7 +59,7 @@ M: utf16be decode-char
|
||||||
] [ append-nums ] if ;
|
] [ append-nums ] if ;
|
||||||
|
|
||||||
: begin-utf16le ( stream byte -- stream char )
|
: begin-utf16le ( stream byte -- stream char )
|
||||||
over stream-read1 [ double-le ] [ drop replacement-char ] if* ;
|
over stream-read1 dup [ double-le ] [ 2drop replacement-char ] if ;
|
||||||
|
|
||||||
M: utf16le decode-char
|
M: utf16le decode-char
|
||||||
drop dup stream-read1 dup [ begin-utf16le ] when nip ;
|
drop dup stream-read1 dup [ begin-utf16le ] when nip ;
|
||||||
|
@ -68,36 +68,34 @@ M: utf16le decode-char
|
||||||
|
|
||||||
: encode-first ( char -- byte1 byte2 )
|
: encode-first ( char -- byte1 byte2 )
|
||||||
-10 shift
|
-10 shift
|
||||||
dup -8 shift BIN: 11011000 bitor
|
[ -8 shift BIN: 11011000 bitor ] [ HEX: FF bitand ] bi ;
|
||||||
swap HEX: FF bitand ;
|
|
||||||
|
|
||||||
: encode-second ( char -- byte3 byte4 )
|
: encode-second ( char -- byte3 byte4 )
|
||||||
BIN: 1111111111 bitand
|
BIN: 1111111111 bitand
|
||||||
dup -8 shift BIN: 11011100 bitor
|
[ -8 shift BIN: 11011100 bitor ] [ BIN: 11111111 bitand ] bi ;
|
||||||
swap BIN: 11111111 bitand ;
|
|
||||||
|
|
||||||
: stream-write2 ( stream char1 char2 -- )
|
: stream-write2 ( char1 char2 stream -- )
|
||||||
rot [ stream-write1 ] curry bi@ ;
|
[ stream-write1 ] curry bi@ ;
|
||||||
|
|
||||||
: char>utf16be ( stream char -- )
|
: char>utf16be ( char stream -- )
|
||||||
dup HEX: FFFF > [
|
over HEX: FFFF > [
|
||||||
HEX: 10000 -
|
[ HEX: 10000 - ] dip
|
||||||
2dup encode-first stream-write2
|
[ [ encode-first ] dip stream-write2 ]
|
||||||
encode-second stream-write2
|
[ [ encode-second ] dip stream-write2 ] 2bi
|
||||||
] [ h>b/b swap stream-write2 ] if ;
|
] [ [ h>b/b swap ] dip stream-write2 ] if ;
|
||||||
|
|
||||||
M: utf16be encode-char ( char stream encoding -- )
|
M: utf16be encode-char ( char stream encoding -- )
|
||||||
drop swap char>utf16be ;
|
drop char>utf16be ;
|
||||||
|
|
||||||
: char>utf16le ( char stream -- )
|
: char>utf16le ( stream char -- )
|
||||||
dup HEX: FFFF > [
|
over HEX: FFFF > [
|
||||||
HEX: 10000 -
|
[ HEX: 10000 - ] dip
|
||||||
2dup encode-first swap stream-write2
|
[ [ encode-first swap ] dip stream-write2 ]
|
||||||
encode-second swap stream-write2
|
[ [ encode-second swap ] dip stream-write2 ] 2bi
|
||||||
] [ h>b/b stream-write2 ] if ;
|
] [ [ h>b/b ] dip stream-write2 ] if ;
|
||||||
|
|
||||||
M: utf16le encode-char ( char stream encoding -- )
|
M: utf16le encode-char ( char stream encoding -- )
|
||||||
drop swap char>utf16le ;
|
drop char>utf16le ;
|
||||||
|
|
||||||
! UTF-16
|
! UTF-16
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue