Norbert, On 08 May 2012, at 16:52, Norbert Hartl wrote:
Am 08.05.2012 um 16:20 schrieb Sven Van Caekenberghe:
<rant>Notice how f*cked up TextConverters are: when given a binary stream, their natural input one would think, they just don't do any conversion!</rant>
Isn't that obvious? In a time where there was text or binary and your biggest problem was line ending conversion it is normal to do not any processing on a binary stream. It is its definition. The world has changed since then and since we have encodings there is no such thing as a text/ascii stream anymore. I think we have to slowly convert those things to modern stuff. How hard that is? Look at Grease it is a piece of modern software but still encodes string -> string. There are always caveats not to ignore.
Right! In the very latest Zn I added ZnCharacterReadStream and ZnCharacterWriteStream but I did not yet integrate/use them. These add character decoding and encoding to binary streams, here are some tests that show how to use them: testSimpleUTF8WriteStream | string bytes stream | string := 'élève en Français'. bytes := ZnUTF8Encoder new encodeString: string. stream := (ZnCharacterWriteStream on: #[] writeStream). stream nextPutAll: string. self assert: stream wrappedStream contents equals: bytes testSimpleUTF8ReadStream | string bytes | string := 'élève en Français'. bytes := ZnUTF8Encoder new encodeString: string. self assert: (ZnCharacterReadStream on: bytes readStream) upToEnd equals: string I think these could be useful in other places (FS) as well and help in getting rid of some old stuff. Mind you, these are currently still only experiments. Sven -- Sven Van Caekenberghe http://stfx.eu Smalltalk is the Red Pill