1package ansiext
2
3import (
4 "strings"
5
6 "github.com/charmbracelet/x/ansi"
7)
8
9// Escape replaces control characters with their Unicode Control Picture
10// representations to ensure they are displayed correctly in the UI.
11func Escape(content string) string {
12 var sb strings.Builder
13 for _, r := range content {
14 switch {
15 case r >= 0 && r <= 0x1f: // Control characters 0x00-0x1F
16 sb.WriteRune('\u2400' + r)
17 case r == ansi.DEL:
18 sb.WriteRune('\u2421')
19 default:
20 sb.WriteRune(r)
21 }
22 }
23 return sb.String()
24}