diff --git a/src/hwylterm/bbansi.nim b/src/hwylterm/bbansi.nim index 1d113ea..a84a672 100644 --- a/src/hwylterm/bbansi.nim +++ b/src/hwylterm/bbansi.nim @@ -86,7 +86,7 @@ proc bb*(s: string): BbString = while i < s.len: case s[i] of '\\': - if i < s.len and s[i + 1] == '[': + if i < s.len and (s[i + 1] == '[' or s[i+1] == '\\'): inc i next of '[': @@ -163,7 +163,7 @@ proc `&`*(x: BbString, y: BbString): Bbstring = bb(x.raw & y.raw) proc bbEscape*(s: string): string {.inline.} = - s.replace("[", "[[") + s.replace("[", "[[").replace("\\", "\\\\") proc bbEcho*(args: varargs[string, `$`]) {.sideEffect.} = for x in args: diff --git a/tests/tbbansi.nim b/tests/tbbansi.nim index 460ad8c..abe35d6 100644 --- a/tests/tbbansi.nim +++ b/tests/tbbansi.nim @@ -28,6 +28,7 @@ suite "basic": test "escaped": bbCheck "[[red] ignored pattern", "[red] ignored pattern" + bbCheck "\\[red] ignored pattern","[red] ignored pattern" test "newlines": bbCheck "[red]Red Text[/]\nNext Line", "\e[38;5;1mRed Text\e[0m\nNext Line"