diff --git a/src/std/text.ab b/src/std/text.ab index d43d000b..76affb1d 100644 --- a/src/std/text.ab +++ b/src/std/text.ab @@ -22,7 +22,10 @@ pub fun replace(source, search, replace) { /// Replaces the first occurrence of a pattern in the content with the provided replace text. pub fun replace_once(source, search, replace) { search = replace(search, "\\", "\\\\") - replace = replace(replace, "\\", "\\\\") + if bash_version() >= 502 { + replace = replace(replace, "\\", "\\\\") + } + return trust $ echo \$\{{nameof source}/{search}/{replace}} $ } diff --git a/src/tests/stdlib/replace.ab b/src/tests/stdlib/replace.ab index caf9edcf..54ea716d 100644 --- a/src/tests/stdlib/replace.ab +++ b/src/tests/stdlib/replace.ab @@ -3,10 +3,14 @@ import * from "std/text" // Output // apple apple // apple -// banana\\ +// Succeeded +// one\\two\\\\three\\\\\\ +// one\two\three\\ main { echo replace("banana banana", "banana", "apple") echo replace("\\", "\\", "apple") - echo replace("banana\\", "\\", "\\\\") + echo replace("Succinctly\\", "inctly\\", "eeded") + echo replace("one\\two\\\\three\\\\\\", "\\", "\\\\") + echo replace("one\\two\\\\three\\\\\\", "\\\\", "\\") } diff --git a/src/tests/stdlib/replace_once.ab b/src/tests/stdlib/replace_once.ab index e27816c1..472e83dd 100644 --- a/src/tests/stdlib/replace_once.ab +++ b/src/tests/stdlib/replace_once.ab @@ -1,4 +1,12 @@ import * from "std/text" + +// Output +// Succeeded +// one\\two\\three\\\. +// one\two\three\\\. + main { echo replace_once("Succinctly\\", "inctly\\", "eeded") + echo replace_once("one\\two\\\\three\\\\\\.", "\\", "\\\\") + echo replace_once("one\\two\\\\three\\\\\\.", "\\\\", "\\") }