Module dlangui.core.linestream

This module contains text stream reader implementation

Implements class LineStream for reading of unicode text from stream and returning it by lines.

Support utf8, utf16, utf32 be and le encodings, and line endings - according to D language source file specification.

Low resource consuming. Doesn't flood with GC allocations. Dup line if you want to store it somewhere.

Tracks line number.

Synopsis

import dlangui.core.linestream;

import std.stdio;
import std.conv;
import std.utf;
string fname = "somefile.d";
writeln("opening file");
std.stream.File f = new std.stream.File(fname);
scope(exit) { f.close(); }
try {
    LineStream lines = LineStream.create(f, fname);
    for (;;) {
        dchar[] s = lines.readLine();
        if (s is null)
            break;
        writeln("line " ~ to!string(lines.line()) ~ ":" ~ toUTF8(s));
    }
    if (lines.errorCode != 0) {
        writeln("Error ", lines.errorCode, " ", lines.errorMessage, " -- at line ", lines.errorLine, " position ", lines.errorPos);
    } else {
        writeln("EOF reached");
    }
} catch (Exception e) {
    writeln("Exception " ~ e.toString);
}

Classes

Name Description
LineStream Support reading of file (or string in memory) by lines
OutputLineStream Text file writer which supports different text file formats

Structs

Name Description
TextFileFormat Text file format

Enums

Name Description
EncodingType File encoding
LineEnding Line ending style

Authors

Vadim Lopatin, coolreader.org@gmail.com

Copyright

Vadim Lopatin, 2014

License

Boost License 1.0