diff --git a/table/render.go b/table/render.go index bb8dad5..dadfa53 100644 --- a/table/render.go +++ b/table/render.go @@ -50,7 +50,7 @@ func (t *Table) Render() string { } func (t *Table) renderColumn(out *strings.Builder, row rowStr, colIdx int, maxColumnLength int, hint renderHint) int { - numColumnsRenderer := 1 + numColumnsRendered := 1 // when working on the first column, and autoIndex is true, insert a new // column with the row number on it. @@ -84,10 +84,8 @@ func (t *Table) renderColumn(out *strings.Builder, row rowStr, colIdx int, maxCo break } align = text.AlignCenter - maxColumnLength += t.maxColumnLengths[idx] + - text.RuneCount(t.style.Box.PaddingRight+t.style.Box.PaddingLeft) + - 1 - numColumnsRenderer++ + maxColumnLength += t.getMaxColumnLengthForMerging(idx) + numColumnsRendered++ } } colStr = align.Apply(colStr, maxColumnLength) @@ -99,7 +97,7 @@ func (t *Table) renderColumn(out *strings.Builder, row rowStr, colIdx int, maxCo t.renderColumnColorized(out, colIdx, colStr, hint) - return colIdx + numColumnsRenderer + return colIdx + numColumnsRendered } func (t *Table) renderColumnAutoIndex(out *strings.Builder, hint renderHint) { diff --git a/table/render_html_test.go b/table/render_html_test.go index 8bebbf5..5d9b69c 100644 --- a/table/render_html_test.go +++ b/table/render_html_test.go @@ -2,7 +2,6 @@ package table import ( "fmt" - "os" "testing" "github.com/jedib0t/go-pretty/v6/text" @@ -99,7 +98,7 @@ func TestTable_RenderHTML_AutoIndex(t *testing.T) { } tw.AppendFooter(row) } - tw.SetOutputMirror(os.Stdout) + tw.SetOutputMirror(nil) tw.SetAutoIndex(true) tw.SetStyle(StyleLight) @@ -251,7 +250,7 @@ func TestTable_RenderHTML_CustomStyle(t *testing.T) { EscapeText: false, Newline: "", } - tw.SetOutputMirror(os.Stdout) + tw.SetOutputMirror(nil) expectedOut := ` diff --git a/table/render_test.go b/table/render_test.go index 23a36e8..b8a967d 100644 --- a/table/render_test.go +++ b/table/render_test.go @@ -210,7 +210,8 @@ func TestTable_Render_AutoMerge_Complex(t *testing.T) { │ │ │ ├─────┴─────┼─────┤ │ │ │ │ 5 │ │ └───┴──────────────────────────────┴───────────┴───────────┴─────┘` - assert.Equal(t, expectedOut, tw.Render()) + out := tw.Render() + assert.Equal(t, expectedOut, out) } func TestTable_Render_AutoMerge_Complex2(t *testing.T) { diff --git a/table/table.go b/table/table.go index ae11c32..eadf9b7 100644 --- a/table/table.go +++ b/table/table.go @@ -548,6 +548,15 @@ func (t *Table) getFormat(hint renderHint) text.Format { return t.style.Format.Row } +func (t *Table) getMaxColumnLengthForMerging(colIdx int) int { + maxColumnLength := t.maxColumnLengths[colIdx] + maxColumnLength += text.RuneCount(t.style.Box.PaddingRight + t.style.Box.PaddingLeft) + if t.style.Options.SeparateColumns { + maxColumnLength += text.RuneCount(t.style.Box.EmptySeparator) + } + return maxColumnLength +} + func (t *Table) getRow(rowIdx int, hint renderHint) rowStr { switch { case hint.isHeaderRow: