std.range.byLine
    "Nordlöw" via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Wed Sep 10 15:45:06 PDT 2014
    
    
  
On Wednesday, 10 September 2014 at 22:29:55 UTC, Ali Çehreli 
wrote:
>     assert("foo\nbar\n"
>            .splitter(newline)
>            .filter!(a => !a.empty)
>            .equal([ "foo", "bar" ]));
> }
>
> Ali
Ok, great.
So I got.
auto byLine(Range)(Range input) if (isForwardRange!Range)
{
     import std.algorithm: splitter;
     import std.ascii: newline;
     static if (newline.length == 1)
     {
         return input.splitter(newline.front);
     }
     else
     {
         return input.splitter(newline);
     }
}
unittest
{
     import std.algorithm: equal;
     assert(equal("a\nb".byLine, ["a", "b"]));
}
One thing still:
Is my optimization for newline.length == 1 unnecessary or perhaps 
even wrong?
    
    
More information about the Digitalmars-d-learn
mailing list