Bug 10933 – findSplitBefore/After should have needle-less overloads

Status
NEW
Severity
enhancement
Priority
P4
Component
phobos
Product
D
Version
D2
Platform
All
OS
All
Creation time
2013-08-30T23:26:46Z
Last change time
2024-12-01T16:18:40Z
Assigned to
No Owner
Creator
Jakob Ovrum
Moved to GitHub: phobos#10000 →

Comments

Comment #0 by jakobovrum — 2013-08-30T23:26:46Z
`find` has an overload that doesn't take a needle but requires an unary predicate function. `findSplitBefore` and `findSplitAfter` should have equivalent overloads. Test illustrating use: ---- unittest { import std.algorithm : findSplitBefore; import std.uni : isWhite; import std.string : stripLeft; immutable tests = [ "prefix postfix lorem ipsum", "prefix\tpostfix lorem ipsum" ]; foreach(test; tests) { auto result = test.findSplitBefore!isWhite(); assert(result[0] == "prefix"); assert(result[1].stripLeft() == "postfix lorem ipsum"); } } ---- It would be especially useful because `until` is strictly lazy and thus can't be used with slicing to reproduce the above results.
Comment #1 by luis — 2018-03-21T18:25:16Z
Yup, I've ran into the same issue multiple times. This last time with the plain findSplit; I don't recall if also with findSplitBefore/After. This workaround works: range.byCodeUnit.findSplit!((a, b) => a.isWhite)(" "); Interestingly, if you use "" instead of " " it won't work, which arguably is a bug, since the predicate doesn't even use b.
Comment #2 by robert.schadek — 2024-12-01T16:18:40Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/10000 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB