[phobos] Transcoded text stdio
Shin Fujishiro
rsinfu at gmail.com
Thu Aug 5 23:50:06 PDT 2010
Hello,
I'm trying to integrate codeset conversion facility to std.stdio.
But how can it be done?
Mixing transcoded and non-transcoded (UTF-8) I/O in the same File
structure will mess up the source. I think separating UTF-8 based I/O
and transcoded I/O is necessary.
I could think of the following four ways.
1. Integrate everything in the File anyway.
2. Make the File to always perform conversion.
3. Create a distinct type for transcoded I/O.
----------
shared TranscodedFile stdout;
stdout.writeln("Hallå, Värld!");
----------
# http://github.com/sinfu/misc/blob/master/stdio/test01.d
4. Simplify the File and define upper layer structures.
----------
// File itself doesn't provide byLine etc.
shared File stdout;
// these 'ports' perform actual I/O for specific purposes
shared UTF8TextIOPort stdoutUTF8;
shared NativeTextIOPort stdoutText;
shared BinaryIOPort stdoutBin;
// wrap stdout with various 'I/O ports'
stdoutUTF8 = UTF8TextIOPort(stdout);
stdoutText = NativeTextIOPort(stdout);
stdoutBin = BinaryIOPort(stdout);
// write text in UTF-8
stdoutUTF8.writeln("Hallå, Värld!");
// write text in console encoding
stdoutText.writeln("Hallå, Värld!");
// free functions use stdoutText
writeln("Hallå, Värld!");
----------
# http://github.com/sinfu/misc/blob/master/stdio/test02.d
...
I'm uncertain of which is the best. Perhaps there are more reasonable
ways. What do you think? Any ideas?
Thanks,
Shin
More information about the phobos
mailing list