summaryrefslogtreecommitdiff
path: root/internal/table
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-02-05 01:11:05 +0200
committerPaul Buetow <paul@buetow.org>2025-02-05 01:11:05 +0200
commitbd97ed65bb98efbf73bda041983b83d6c434a2c8 (patch)
tree4073ecbd3de00e864c6ee58effd168e59fcc1e67 /internal/table
parent24778551d8e5b0b47a06494dd28a66a71dfb47f0 (diff)
refactor
Diffstat (limited to 'internal/table')
-rw-r--r--internal/table/table.go37
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
}