diff --git a/tabularize.go b/tabularize.go index 546ee47..69832ea 100644 --- a/tabularize.go +++ b/tabularize.go @@ -75,7 +75,11 @@ func (t *Table) Render(data [][]string) string { sb.WriteString("|") } for col, cell := range rowdata { - sb.WriteString(t.padCell(cell, maxLengths[col])) + paddedCell := t.padCell(cell, maxLengths[col]) + if col == len(maxLengths)-1 && !t.useTableBorders { + paddedCell = strings.TrimRight(paddedCell, " ") + } + sb.WriteString(paddedCell) if t.useColumnSeparators && (col < len(maxLengths)-1 || t.useTableBorders) { sb.WriteString("|") } else if col < len(maxLengths)-1 { diff --git a/tabularize_test.go b/tabularize_test.go index c578ea0..a118cae 100644 --- a/tabularize_test.go +++ b/tabularize_test.go @@ -32,8 +32,8 @@ func TestRender_NoBordersOrSeparators(t *testing.T) { {"Alice", "30", "New York"}, {"Bob", "25", "Los Angeles"}, } - expected := `Name Age City -Alice 30 New York + expected := `Name Age City +Alice 30 New York Bob 25 Los Angeles ` table.useColumnSeparators = false @@ -85,10 +85,10 @@ func TestRender_HeaderSeparator(t *testing.T) { {"Alice", "30", "New York"}, {"Bob", "25", "Los Angeles"}, } - expected := ` Name | Age | City + expected := ` Name | Age | City -------+-----+------------- - Alice | 30 | New York - Bob | 25 | Los Angeles + Alice | 30 | New York + Bob | 25 | Los Angeles ` table.useTableBorders = false table.useHeaderSeparator = true @@ -97,3 +97,21 @@ func TestRender_HeaderSeparator(t *testing.T) { t.Errorf("Expected:\n%s\nGot:\n%s", expected, result) } } + +func TestRender_UnpaddedFinalColumnWithoutBorders(t *testing.T) { + table := NewTable() + data := [][]string{ + {"Name", "Note"}, + {"Alice", ""}, + {"Bob", "Hello"}, + } + expected := ` Name | Note + Alice | + Bob | Hello +` + table.useHeaderSeparator = false + result := table.Render(data) + if result != expected { + t.Errorf("Expected:\n%q\nGot:\n%q", expected, result) + } +}