diff --git a/extra/bencode/bencode-tests.factor b/extra/bencode/bencode-tests.factor index b9a1bcb0b4..7fc9bb2238 100644 --- a/extra/bencode/bencode-tests.factor +++ b/extra/bencode/bencode-tests.factor @@ -7,6 +7,7 @@ USING: bencode linked-assocs tools.test ; { "4:spam" } [ "spam" >bencode ] unit-test { "3:\x01\x02\x03" } [ B{ 1 2 3 } >bencode ] unit-test +{ "\x01\x02\x03" } [ B{ 51 58 1 2 3 } bencode> ] unit-test { { "spam" 42 } } [ "l4:spami42ee" bencode> ] unit-test diff --git a/extra/bencode/bencode.factor b/extra/bencode/bencode.factor index b23ea09c71..fc4537477f 100644 --- a/extra/bencode/bencode.factor +++ b/extra/bencode/bencode.factor @@ -1,6 +1,6 @@ USING: arrays assocs byte-arrays combinators io -io.streams.string kernel linked-assocs math math.parser -sequences strings ; +io.encodings.binary io.streams.byte-array io.streams.string +kernel linked-assocs math math.parser sequences strings ; IN: bencode GENERIC: >bencode ( obj -- bencode ) @@ -50,5 +50,10 @@ PRIVATE> [ read-string ] } case ; -: bencode> ( bencode -- obj ) +GENERIC: bencode> ( bencode -- obj ) + +M: byte-array bencode> + binary [ read-bencode ] with-byte-reader ; + +M: string bencode> [ read-bencode ] with-string-reader ;