diff options
| author | Paul Buetow <paul@buetow.org> | 2025-02-05 01:11:05 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-02-05 01:11:05 +0200 |
| commit | bd97ed65bb98efbf73bda041983b83d6c434a2c8 (patch) | |
| tree | 4073ecbd3de00e864c6ee58effd168e59fcc1e67 /internal/table | |
| parent | 24778551d8e5b0b47a06494dd28a66a71dfb47f0 (diff) | |
refactor
Diffstat (limited to 'internal/table')
| -rw-r--r-- | internal/table/table.go | 37 |
1 files changed, 25 insertions, 12 deletions
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 } |
