BSD style: see
license.txt
Initial release: January 2006
Kris
- class Lines(T) : Iterator!(T) ¶#
-
Iterate across a set of text patterns.
Each pattern is exposed to the client as a slice of the original
content, where the slice is transient. If you need to retain the
exposed content, then you should .dup it appropriately.
These iterators are based upon the IBuffer construct, and can
thus be used in conjunction with other Iterators and/or Reader
instances upon a common buffer ~ each will stay in lockstep via
state maintained within the IBuffer.
The content exposed via an iterator is supposed to be entirely
read-only. All current iterators abide by this rule, but it is
possible a user could mutate the content through a get() slice.
To enforce the desired read-only aspect, the code would have to
introduce redundant copying or the compiler would have to support
read-only arrays.
See LineIterator, SimpleIterator, RegexIterator, QuotedIterator.
- this(InputStream stream = null) ¶#
-
Construct an uninitialized iterator. For example:
1
2
3
4
5
6
7
| auto lines = new LineIterator!(char);
void somefunc (IBuffer buffer)
{
foreach (line; lines.set(buffer))
Cout (line).newline;
}
|
Construct a streaming iterator upon a buffer:
1
2
3
4
5
| void somefunc (IBuffer buffer)
{
foreach (line; new LineIterator!(char) (buffer))
Cout (line).newline;
}
|
Construct a streaming iterator upon a conduit:
1
2
| foreach (line; new LineIterator!(char) (new File ("myfile")))
Cout (line).newline;
|
- bool readln(ref T[] content) [final] ¶#
-
Read a line of text, and return false when there's no
further content available.
- size_t scan(void[] data) [protected] ¶#
-
Scanner implementation for this iterator. Find a '\n',
and eat any immediately preceeding '\r'