From ada064d9c3d0216c625624387a44234e5ad6ea9f Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 11 Jan 2020 17:31:32 -0600 Subject: [PATCH] byte-arrays: Add a byte-sequence protocol for byte-{array,vector} Allow hexdumping strings as utf8 for convenience. --- basis/tools/hexdump/hexdump.factor | 9 ++++++--- basis/urls/encoding/encoding.factor | 2 +- core/byte-arrays/byte-arrays.factor | 3 +++ core/byte-vectors/byte-vectors.factor | 1 + 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/basis/tools/hexdump/hexdump.factor b/basis/tools/hexdump/hexdump.factor index a5c4bec619..c5bb93a7c9 100644 --- a/basis/tools/hexdump/hexdump.factor +++ b/basis/tools/hexdump/hexdump.factor @@ -3,9 +3,9 @@ USING: accessors ascii byte-arrays byte-vectors combinators command-line destructors fry io io.encodings io.encodings.binary -io.files io.streams.string kernel literals locals math -math.parser namespaces sequences sequences.private strings typed -; +io.encodings.string io.encodings.utf8 io.files io.streams.string +kernel literals locals math math.parser namespaces sequences +sequences.private strings typed ; IN: tools.hexdump @@ -78,6 +78,9 @@ M: byte-array hexdump. all-bytes hexdump-bytes ; M: byte-vector hexdump. all-bytes underlying>> hexdump-bytes ; +M: string hexdump. utf8 encode hexdump. ; + + : hexdump ( byte-array -- str ) [ hexdump. ] with-string-writer ; diff --git a/basis/urls/encoding/encoding.factor b/basis/urls/encoding/encoding.factor index 33db055b48..7927fd83aa 100644 --- a/basis/urls/encoding/encoding.factor +++ b/basis/urls/encoding/encoding.factor @@ -43,7 +43,7 @@ IN: urls.encoding : (url-encode) ( str quot: ( ch -- ? ) -- encoded ) [ - over byte-array? [ + over byte-sequence? [ '[ dup @ [ , ] [ hex% ] if ] each ] [ [ present ] dip diff --git a/core/byte-arrays/byte-arrays.factor b/core/byte-arrays/byte-arrays.factor index 36a54b9515..ee7f5d660e 100644 --- a/core/byte-arrays/byte-arrays.factor +++ b/core/byte-arrays/byte-arrays.factor @@ -7,6 +7,8 @@ IN: byte-arrays BUILTIN: byte-array { length array-capacity read-only initial: 0 } ; +MIXIN: byte-sequence + PRIMITIVE: (byte-array) ( n -- byte-array ) PRIMITIVE: ( n -- byte-array ) PRIMITIVE: resize-byte-array ( n byte-array -- new-byte-array ) @@ -27,6 +29,7 @@ M: byte-array resize resize-byte-array ; inline INSTANCE: byte-array sequence +INSTANCE: byte-array byte-sequence : 1byte-array ( x -- byte-array ) B{ } 1sequence ; inline diff --git a/core/byte-vectors/byte-vectors.factor b/core/byte-vectors/byte-vectors.factor index b53fd3866d..faf2c0c0d8 100644 --- a/core/byte-vectors/byte-vectors.factor +++ b/core/byte-vectors/byte-vectors.factor @@ -46,3 +46,4 @@ M: byte-array new-resizable drop ; inline M: byte-vector new-resizable drop ; inline INSTANCE: byte-vector growable +INSTANCE: byte-vector byte-sequence