ansi.go

 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}