diff --git a/table/table.go b/table/table.go index 8b87016..7dec2ab 100644 --- a/table/table.go +++ b/table/table.go @@ -367,14 +367,9 @@ func (t *Table) initForRenderMaxColumnLength() { var findMaxColumnLengths = func(rows []rowStr) { for _, row := range rows { for colIdx, colStr := range row { - allowedColumnLength := t.getAllowedColumnLength(colIdx) - if allowedColumnLength > 0 { - t.maxColumnLengths[colIdx] = allowedColumnLength - } else { - colLongestLineLength := util.GetLongestLineLength(colStr) - if colLongestLineLength > t.maxColumnLengths[colIdx] { - t.maxColumnLengths[colIdx] = colLongestLineLength - } + longestLineLen := util.GetLongestLineLength(colStr) + if longestLineLen > t.maxColumnLengths[colIdx] { + t.maxColumnLengths[colIdx] = longestLineLen } } } @@ -384,6 +379,14 @@ func (t *Table) initForRenderMaxColumnLength() { findMaxColumnLengths(t.rowsHeader) findMaxColumnLengths(t.rows) findMaxColumnLengths(t.rowsFooter) + + // restrict the column lengths if any are overthe allowed lengths + for colIdx := range t.maxColumnLengths { + allowedLen := t.getAllowedColumnLength(colIdx) + if allowedLen > 0 && t.maxColumnLengths[colIdx] > allowedLen { + t.maxColumnLengths[colIdx] = allowedLen + } + } } func (t *Table) initForRenderRowSeparator() { diff --git a/table/table_test.go b/table/table_test.go index 1a3b03b..d5d7a83 100644 --- a/table/table_test.go +++ b/table/table_test.go @@ -188,6 +188,18 @@ func TestTable_SetAllowedColumnLengths(t *testing.T) { \-----v---v----v-----v---------/` assert.Equal(t, []int{0, 1, 2, 3, 7}, table.allowedColumnLengths) assert.Equal(t, expectedOut, table.Render()) + + table.SetAllowedColumnLengths([]int{100, 100, 100, 100, 7}) + expectedOut = `(-----^--------^-----------^------^---------) +[< 1>|||<3000>|< >] +[< 20>|||<2000>|] +[< >|< >|< >|< >|] +[< >|< >|< >|< >|] +[< >|< >|< >|< >|< Snow! >] +[<300>|||<5000>|< >] +\-----v--------v-----------v------v---------/` + assert.Equal(t, []int{100, 100, 100, 100, 7}, table.allowedColumnLengths) + assert.Equal(t, expectedOut, table.Render()) } func TestTable_SetAllowedRowLength(t *testing.T) {