fix(table): use ansi.Truncate instead of runewidth.Truncate (#884)

`runewidth.Truncate` does not consider terminal escape characters - this
means that if a table cell contains funky characters, then it will be
incorrectly truncated.

Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
Justin Chadwell
2026-02-13 09:45:48 -03:00
committed by GitHub
parent cc76d4176d
commit d004225e8c
2 changed files with 18 additions and 3 deletions
+15
View File
@@ -288,6 +288,21 @@ func TestModel_RenderRow(t *testing.T) {
}
}
func TestModel_RenderRow_AnsiWidth(t *testing.T) {
value := "\x1b[31mABCDEFGH\x1b[0m"
table := &Model{
rows: []Row{{value}},
cols: []Column{{Title: "col1", Width: 8}},
styles: Styles{Cell: lipgloss.NewStyle()},
}
got := ansi.Strip(table.renderRow(0))
want := "ABCDEFGH"
if got != want {
t.Fatalf("\n\nWant: \n%s\n\nGot: \n%s\n", want, got)
}
}
func TestTableAlignment(t *testing.T) {
t.Run("No border", func(t *testing.T) {
biscuits := New(