diff --git a/src/util/funcs.zig b/src/util/funcs.zig index c65173dd38e05c998bd04d4bdae7eb4a6f2974a8..fb6ae10a542cc97f21442cad28e7929c73a0a272 100644 --- a/src/util/funcs.zig +++ b/src/util/funcs.zig @@ -305,3 +305,21 @@ pub fn detct_mainfile(override: []const u8, dir: ?std.fs.Dir, name: []const u8) } return error.CantFindMain; } + +pub fn indexOfN(haystack: []const u8, needle: u8, n: usize) ?usize { + var i: usize = 0; + var c: usize = 0; + while (c < n) { + i = indexOfAfter(haystack, needle, i) orelse return null; + c += 1; + } + return i; +} + +pub fn indexOfAfter(haystack: []const u8, needle: u8, after: usize) ?usize { + for (haystack) |c, i| { + if (i <= after) continue; + if (c == needle) return i; + } + return null; +}