Here's how it would look in my library: compressed := original zipped. "There is currently one definition, in AbstractStringOrByteArray, covering [ReadOnly]ByteArray, [ReadOnly]String and its many subclasses, ByteBuffer,StringBuffer, Substring, [ReadOnly]ShortArray, [ReadOnly]MappedByteArray, and some others. This relies on _ asByteArraySize and _ asByteArrayDo: _. There is no need for a separate #utf8Encoded, that's what asByteArrayDo: *does*."
copy := original class unzip: compressed. "This is a little trickier, but not hugely so. There is no need for special case code. [ReadOnly][Mapped]ByteArray and ByteBuffer are sequences of bytes, Stringy things are Unicode, and [ReadOnly]ShortArrays are treated as UTF16." As far as I can tell, this just works for the original use case. On Fri, 4 Oct 2019 at 11:42, PBKResearch <pe...@pbkresearch.co.uk> wrote: > > Richard > > I don't think so. The case being considered for my problem is the compression > of a ByteArray produced by applying #utf8Encoded to a WideString, but it > extends to any other form of ByteArray. If you substitute ByteArray for > SomeClass in your examples, I think you will see why the chosen interface was > used. > > Peter Kenny > > > -----Original Message----- > From: Pharo-users <pharo-users-boun...@lists.pharo.org> On Behalf Of Richard > O'Keefe > Sent: 03 October 2019 23:08 > To: Any question about pharo is welcome <pharo-users@lists.pharo.org> > Subject: Re: [Pharo-users] How to zip a WideString > > The interface should surely be > SomeClass > methods for: 'compression' > zipped "return a byte array" > > class methods for: 'decompression' > unzip: aByteArray "return an instance of SomeClass" > >