|
|
|
@ -9,6 +9,7 @@ import (
|
|
|
|
|
"github.com/miguelmota/cointop/table/align"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Table table
|
|
|
|
|
type Table struct {
|
|
|
|
|
cols Cols
|
|
|
|
|
rows Rows
|
|
|
|
@ -17,27 +18,32 @@ type Table struct {
|
|
|
|
|
HideColumHeaders bool
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// New new table
|
|
|
|
|
func New() *Table {
|
|
|
|
|
return &Table{}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SetWidth set table width
|
|
|
|
|
func (t *Table) SetWidth(w int) *Table {
|
|
|
|
|
t.width = w
|
|
|
|
|
return t
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// AddCol add column
|
|
|
|
|
func (t *Table) AddCol(n string) *Col {
|
|
|
|
|
c := &Col{name: n}
|
|
|
|
|
t.cols = append(t.cols, c)
|
|
|
|
|
return c
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// AddRow add row
|
|
|
|
|
func (t *Table) AddRow(v ...interface{}) *Row {
|
|
|
|
|
r := &Row{table: t, values: v, strValues: make([]string, len(v))}
|
|
|
|
|
t.rows = append(t.rows, r)
|
|
|
|
|
return r
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SortAscFn sort ascending function
|
|
|
|
|
func (t *Table) SortAscFn(n string, fn SortFn) *Table {
|
|
|
|
|
i := t.cols.Index(n)
|
|
|
|
|
s := SortBy{index: i, order: SortAsc, sortFn: fn}
|
|
|
|
@ -45,10 +51,12 @@ func (t *Table) SortAscFn(n string, fn SortFn) *Table {
|
|
|
|
|
return t
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SortAsc sort ascending
|
|
|
|
|
func (t *Table) SortAsc(n string) *Table {
|
|
|
|
|
return t.SortAscFn(n, nil)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SortDescFn sort descending function
|
|
|
|
|
func (t *Table) SortDescFn(n string, fn SortFn) *Table {
|
|
|
|
|
i := t.cols.Index(n)
|
|
|
|
|
s := SortBy{index: i, order: SortDesc, sortFn: fn}
|
|
|
|
@ -56,10 +64,12 @@ func (t *Table) SortDescFn(n string, fn SortFn) *Table {
|
|
|
|
|
return t
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SortDesc sort descending
|
|
|
|
|
func (t *Table) SortDesc(n string) *Table {
|
|
|
|
|
return t.SortDescFn(n, nil)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Sort sort
|
|
|
|
|
func (t *Table) Sort() *Table {
|
|
|
|
|
if len(t.sort) > 0 {
|
|
|
|
|
sort.Sort(t.rows)
|
|
|
|
@ -98,6 +108,7 @@ func (t *Table) normalizeColWidthPerc() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Format format table
|
|
|
|
|
func (t *Table) Format() *Table {
|
|
|
|
|
for _, c := range t.cols {
|
|
|
|
|
c.width = len(c.name) + 1
|
|
|
|
@ -158,6 +169,7 @@ func (t *Table) Format() *Table {
|
|
|
|
|
return t
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Fprint write
|
|
|
|
|
func (t *Table) Fprint(w io.Writer) {
|
|
|
|
|
if !t.HideColumHeaders {
|
|
|
|
|
for _, c := range t.cols {
|
|
|
|
|