From bd97ed65bb98efbf73bda041983b83d6c434a2c8 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 5 Feb 2025 01:11:05 +0200 Subject: refactor --- internal/table/table.go | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) (limited to 'internal/table') diff --git a/internal/table/table.go b/internal/table/table.go index 7ebeb1b..5147b9c 100644 --- a/internal/table/table.go +++ b/internal/table/table.go @@ -17,12 +17,18 @@ type Table struct { err error } -func New(args ...any) *Table { - t := Table{ - headers: make([]string, 0, len(args)), - lengths: make([]int, 0, len(args)), - sprintf: fmt.Sprintf, - } +func New() *Table { + return &Table{sprintf: fmt.Sprintf} +} + +func (t *Table) WithColor(col *color.Color) *Table { + t.sprintf = col.Sprintf + return t +} + +func (t *Table) Header(args ...any) *Table { + t.headers = make([]string, 0, len(args)) + t.lengths = make([]int, 0, len(args)) for _, arg := range args { strVal := val(arg) @@ -30,15 +36,10 @@ func New(args ...any) *Table { t.lengths = append(t.lengths, len(strVal)) } - return &t -} - -func (t *Table) WithColor(col *color.Color) *Table { - t.sprintf = col.Sprintf return t } -func (t *Table) Add(args ...any) *Table { +func (t *Table) Row(args ...any) *Table { if len(args) != len(t.headers) { t.err = fmt.Errorf("Table row (%v) not same length as table headers (%v)", args, t.headers) } @@ -59,7 +60,19 @@ func (t *Table) Add(args ...any) *Table { return t } +func (t *Table) MustRender() { + if err := t.Render(); err != nil { + panic(err) + } +} + func (t *Table) Render() error { + if len(t.headers) == 0 { + return fmt.Errorf("no headers") + } + if len(t.rows) == 0 { + return fmt.Errorf("no rows") + } if t.err != nil { return t.err } -- cgit v1.2.3