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.

More...

Members

Classes

LineStream
class LineStream

Support reading of file (or string in memory) by lines

OutputLineStream
class OutputLineStream

Text file writer which supports different text file formats

Enums

EncodingType
enum EncodingType

File encoding

LineEnding
enum LineEnding

Line ending style

Structs

TextFileFormat
struct TextFileFormat

Text file format

Detailed Description

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);
}

Meta

License

Boost License 1.0

Authors

Vadim Lopatin, coolreader.org@gmail.com