49 lines
1008 B
Go
49 lines
1008 B
Go
|
package table
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"text/tabwriter"
|
||
|
)
|
||
|
|
||
|
// HumanPrinter prints tabulated data as a table
|
||
|
type HumanPrinter struct {
|
||
|
writer *tabwriter.Writer
|
||
|
fields int
|
||
|
}
|
||
|
|
||
|
// Headers specify the table headers
|
||
|
func (p *HumanPrinter) Headers(headers ...string) error {
|
||
|
for _, header := range headers {
|
||
|
if _, err := fmt.Fprintf(p.writer, "%s\t", header); err != nil {
|
||
|
return nil
|
||
|
}
|
||
|
}
|
||
|
_, err := fmt.Fprintf(p.writer, "\n")
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func (p *HumanPrinter) Fields(fields ...interface{}) error {
|
||
|
for _, header := range fields {
|
||
|
if _, err := fmt.Fprintf(p.writer, "%v\t", header); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
_, err := fmt.Fprintf(p.writer, "\n")
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func (p *HumanPrinter) StringFields(fields ...string) error {
|
||
|
for _, header := range fields {
|
||
|
if _, err := fmt.Fprintf(p.writer, "%v\t", header); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
_, err := fmt.Fprintf(p.writer, "\n")
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
// Flush prints the data set
|
||
|
func (p *HumanPrinter) Flush() error {
|
||
|
return p.writer.Flush()
|
||
|
}
|