on 94de6bc help sign in
25 lines 539 B history raw
1package ansiext
3import (
4 "strings"
6 "github.com/charmbracelet/x/ansi"
7)
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 sb.Grow(len(content))
14 for _, r := range content {
15 switch {
16 case r >= 0 && r <= 0x1f: // Control characters 0x00-0x1F
17 sb.WriteRune('\u2400' + r)
18 case r == ansi.DEL:
19 sb.WriteRune('\u2421')
20 default:
21 sb.WriteRune(r)
22 }
23 }
24 return sb.String()