From 5d7e404d0ddb4643867345d5e711b717624a591b Mon Sep 17 00:00:00 2001 From: Daylin Morgan Date: Thu, 30 Jan 2025 13:02:52 -0600 Subject: [PATCH] add bbMarkup --- src/hwylterm/bbansi.nim | 4 ++++ tests/tbbansi.nim | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/hwylterm/bbansi.nim b/src/hwylterm/bbansi.nim index fba6cdc..eaaf2db 100644 --- a/src/hwylterm/bbansi.nim +++ b/src/hwylterm/bbansi.nim @@ -353,6 +353,10 @@ func add*(x: var Bbstring, y: string) = x.plain.add y x.spans.add BbSpan(styles: @[], slice:[i, i + y.len - 1 ]) +func bbMarkup*(s: string, style: string): string = + ## enclose a string in bbansi markup for the given style + fmt"[{style}]{s}[/{style}]" + func bbEscape*(s: string): string {.inline.} = s.replace("[", "[[").replace("\\", "\\\\") diff --git a/tests/tbbansi.nim b/tests/tbbansi.nim index 5ea5845..cd53bca 100644 --- a/tests/tbbansi.nim +++ b/tests/tbbansi.nim @@ -16,11 +16,13 @@ suite "basic": bbCheck "[bold red]Bold Red Text", "\e[1;38;5;1mBold Red Text\e[0m" bbCheck "[red]5[/]", "\e[38;5;1m5\e[0m" bbCheck "[bold][red]5","\e[1;38;5;1m5\e[0m" + check "[bold]bold[/bold]" == "bold".bbMarkup("bold") test "compile time": const s = bb"[red]red text" check s == bb"[red]red text" + test "closing": bbCheck "[bold]Bold[red] Bold Red[/red] Bold Only", "\e[1mBold\e[0m\e[1;38;5;1m Bold Red\e[0m\e[1m Bold Only\e[0m"