]> gitweb.factorcode.org Git - factor.git/commitdiff
io.encodings.string: make binary decode/encode nop
authorJoe Groff <arcata@gmail.com>
Mon, 31 Oct 2011 18:07:17 +0000 (11:07 -0700)
committerJoe Groff <arcata@gmail.com>
Mon, 31 Oct 2011 18:07:44 +0000 (11:07 -0700)
Fixes #319.

basis/io/encodings/string/string-tests.factor
basis/io/encodings/string/string.factor

index ddae9c87346e4a71b9266c5d61598595d7d65915..2af5bfb63864683529652b2006b92c12e8e719e7 100644 (file)
@@ -1,10 +1,11 @@
 ! Copyright (C) 2008 Daniel Ehrenberg.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: strings io.encodings.utf8 io.encodings.utf16
-io.encodings.string tools.test ;
+io.encodings.string tools.test io.encodings.binary ;
 IN: io.encodings.string.tests
 
 [ "hello" ] [ "hello" utf8 decode ] unit-test
+[ B{ 0 1 22 255 } ] [ B{ 0 1 22 255 } binary decode ] unit-test
 [ "he" ] [ "\0h\0e" utf16be decode ] unit-test
 
 [ "hello" ] [ "hello" utf8 encode >string ] unit-test
index d8f2acaaf8a17bcc415487bab16999c5036b20c3..67c34fb37729178a4415cbb34e764a881ed8f6e0 100644 (file)
@@ -1,16 +1,23 @@
 ! Copyright (C) 2008 Daniel Ehrenberg.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: byte-vectors io io.encodings io.streams.byte-array
-io.streams.string kernel locals sbufs sequences ;
+io.streams.string kernel locals sbufs sequences io.private
+io.encodings.binary ;
 IN: io.encodings.string
 
 :: decode ( byte-array encoding -- string )
-    byte-array encoding <byte-reader> :> reader
-    byte-array length encoding guess-decoded-length <sbuf> :> buf
-    [ reader stream-read1 dup ] [ buf push ] while drop
-    buf "" like ; inline
+    encoding binary eq? [ byte-array ] [
+        byte-array encoding <byte-reader> :> reader
+        byte-array length
+        encoding guess-decoded-length
+        reader stream-exemplar-growable new-resizable :> buf
+        [ reader stream-read1 dup ] [ buf push ] while drop
+        buf reader stream-exemplar like
+    ] if ; inline
 
 :: encode ( string encoding -- byte-array )
-    string length encoding guess-encoded-length <byte-vector> :> vec
-    string vec encoding <encoder> stream-write
-    vec B{ } like ; inline
+    encoding binary eq? [ string ] [
+        string length encoding guess-encoded-length <byte-vector> :> vec
+        string vec encoding <encoder> stream-write
+        vec B{ } like
+    ] if ; inline