ref: cf50193c7dc0c13d373d60982e7cb95168e0167e
dir: /lib/std/strreplace.myr/
use "alloc"
use "die"
use "slcp"
use "strfind"
use "sljoin"
use "types"
use "option"
pkg std =
const strreplace : (haystack : byte[:], needle : byte[:], repl : byte[:] -> byte[:])
;;
const strreplace = {haystack, needle, repl
var ret
iassert(needle.len > 0, "missing needle")
ret = ""
while true
match std.strfind(haystack, needle)
| `None: break
| `Some idx:
std.sljoin(&ret, haystack[:idx])
std.sljoin(&ret, repl)
haystack = haystack[idx + needle.len:]
;;
;;
std.sljoin(&ret, haystack)
-> ret
}