From 355427196e7cc13955cd606153e1db0f4cb59f00 Mon Sep 17 00:00:00 2001 From: Naveen Mahalingam Date: Sat, 16 May 2020 12:55:31 -0700 Subject: [PATCH] table: auto-index should not be applied on footer; fixes #108 (#118) --- table/render_csv_test.go | 10 +++++++++- table/render_html.go | 4 +++- table/render_html_test.go | 24 +++++++++++++++++++++--- table/render_markdown.go | 2 +- table/render_markdown_test.go | 12 ++++++++++-- 5 files changed, 44 insertions(+), 8 deletions(-) diff --git a/table/render_csv_test.go b/table/render_csv_test.go index 4a07c66..02ae9a0 100644 --- a/table/render_csv_test.go +++ b/table/render_csv_test.go @@ -40,6 +40,13 @@ func TestTable_RenderCSV_AutoIndex(t *testing.T) { } tw.AppendRow(row) } + for rowIdx := 0; rowIdx < 1; rowIdx++ { + row := make(Row, 10) + for colIdx := 0; colIdx < 10; colIdx++ { + row[colIdx] = AutoIndexColumnID(colIdx) + "F" + } + tw.AppendFooter(row) + } tw.SetAutoIndex(true) tw.SetStyle(StyleLight) @@ -53,7 +60,8 @@ func TestTable_RenderCSV_AutoIndex(t *testing.T) { 7,A7,B7,C7,D7,E7,F7,G7,H7,I7,J7 8,A8,B8,C8,D8,E8,F8,G8,H8,I8,J8 9,A9,B9,C9,D9,E9,F9,G9,H9,I9,J9 -10,A10,B10,C10,D10,E10,F10,G10,H10,I10,J10` +10,A10,B10,C10,D10,E10,F10,G10,H10,I10,J10 +,AF,BF,CF,DF,EF,FF,GF,HF,IF,JF` assert.Equal(t, expectedOut, tw.RenderCSV()) } diff --git a/table/render_html.go b/table/render_html.go index 62d81f4..a07db4c 100644 --- a/table/render_html.go +++ b/table/render_html.go @@ -93,8 +93,10 @@ func (t *Table) htmlRenderRow(out *strings.Builder, row rowStr, hint renderHint) if colIdx == 0 && t.autoIndex { if hint.isHeaderRow { out.WriteString("  \n") + } else if hint.isFooterRow { + out.WriteString("  \n") } else { - out.WriteString(fmt.Sprintf(" %d\n", hint.rowNumber)) + out.WriteString(fmt.Sprintf(" %d\n", hint.rowNumber)) } } diff --git a/table/render_html_test.go b/table/render_html_test.go index f5466e7..997ef59 100644 --- a/table/render_html_test.go +++ b/table/render_html_test.go @@ -2,6 +2,7 @@ package table import ( "fmt" + "os" "testing" "github.com/jedib0t/go-pretty/v6/text" @@ -81,6 +82,7 @@ func TestTable_RenderHTML(t *testing.T) { assert.Equal(t, expectedOut, tw.RenderHTML()) } + func TestTable_RenderHTML_AutoIndex(t *testing.T) { tw := NewWriter() for rowIdx := 0; rowIdx < 3; rowIdx++ { @@ -90,6 +92,14 @@ func TestTable_RenderHTML_AutoIndex(t *testing.T) { } tw.AppendRow(row) } + for rowIdx := 0; rowIdx < 1; rowIdx++ { + row := make(Row, 3) + for colIdx := 0; colIdx < 3; colIdx++ { + row[colIdx] = AutoIndexColumnID(colIdx) + "F" + } + tw.AppendFooter(row) + } + tw.SetOutputMirror(os.Stdout) tw.SetAutoIndex(true) tw.SetStyle(StyleLight) @@ -104,24 +114,32 @@ func TestTable_RenderHTML_AutoIndex(t *testing.T) { - 1 + 1 A1 B1 C1 - 2 + 2 A2 B2 C2 - 3 + 3 A3 B3 C3 + + +   + AF + BF + CF + + ` assert.Equal(t, expectedOut, tw.RenderHTML()) } diff --git a/table/render_markdown.go b/table/render_markdown.go index e6e7ac3..8ca852d 100644 --- a/table/render_markdown.go +++ b/table/render_markdown.go @@ -48,7 +48,7 @@ func (t *Table) markdownRenderRow(out *strings.Builder, row rowStr, hint renderH if colIdx == 0 && t.autoIndex { out.WriteRune(' ') if hint.isSeparatorRow { - out.WriteString("--- ") + out.WriteString("---:") } else if hint.isRegularRow() { out.WriteString(fmt.Sprintf("%d ", hint.rowNumber)) } diff --git a/table/render_markdown_test.go b/table/render_markdown_test.go index 3ad4aa4..96557b2 100644 --- a/table/render_markdown_test.go +++ b/table/render_markdown_test.go @@ -40,11 +40,18 @@ func TestTable_RenderMarkdown_AutoIndex(t *testing.T) { } tw.AppendRow(row) } + for rowIdx := 0; rowIdx < 1; rowIdx++ { + row := make(Row, 10) + for colIdx := 0; colIdx < 10; colIdx++ { + row[colIdx] = AutoIndexColumnID(colIdx) + "F" + } + tw.AppendFooter(row) + } tw.SetAutoIndex(true) tw.SetStyle(StyleLight) expectedOut := `| | A | B | C | D | E | F | G | H | I | J | -| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| ---:| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 1 | A1 | B1 | C1 | D1 | E1 | F1 | G1 | H1 | I1 | J1 | | 2 | A2 | B2 | C2 | D2 | E2 | F2 | G2 | H2 | I2 | J2 | | 3 | A3 | B3 | C3 | D3 | E3 | F3 | G3 | H3 | I3 | J3 | @@ -54,7 +61,8 @@ func TestTable_RenderMarkdown_AutoIndex(t *testing.T) { | 7 | A7 | B7 | C7 | D7 | E7 | F7 | G7 | H7 | I7 | J7 | | 8 | A8 | B8 | C8 | D8 | E8 | F8 | G8 | H8 | I8 | J8 | | 9 | A9 | B9 | C9 | D9 | E9 | F9 | G9 | H9 | I9 | J9 | -| 10 | A10 | B10 | C10 | D10 | E10 | F10 | G10 | H10 | I10 | J10 |` +| 10 | A10 | B10 | C10 | D10 | E10 | F10 | G10 | H10 | I10 | J10 | +| | AF | BF | CF | DF | EF | FF | GF | HF | IF | JF |` assert.Equal(t, expectedOut, tw.RenderMarkdown()) }