On Wednesday, 28 October 2015 at 00:07:23 UTC, sigod wrote:
Only removed `filter` from code.
You know, I was just writing an answer for this and I kinda
changed my mind. Without filter... I think splitter.splitter
ought to work.
The implementation requires slicing unless you pass it a
predicate. Only that overload works on minimal forward ranges.
This compiles:
import std.algorithm;
import std.array;
import std.stdio;
void main(string[] args)
{
auto t = "foo\nbar\ncool---beans"
.splitter('\n')
.filter!(e => e.length)
.splitter!(a => a == "bar")
;
writeln(t);
}
It returns [["foo"], ["cool---beans"]]; it split it on the "bar"
line in the middle.
I think that might be basically what you want.