mirror of
https://github.com/fatedier/frp.git
synced 2024-12-15 11:10:50 +01:00
2.3 KiB
2.3 KiB
table
Package table provides a convenient way to generate tabular output of any data, primarily useful for CLI tools.
Features
- Accepts all data types (
string
,int
,interface{}
, everything!) and will use theString() string
method of a type if available. - Can specify custom formatting for the header and first column cells for better readability.
- Columns are left-aligned and sized to fit the data, with customizable padding.
- The printed output can be sent to any
io.Writer
, defaulting toos.Stdout
. - Built to an interface, so you can roll your own
Table
implementation. - Works well with ANSI colors (fatih/color in the example)!
- Can provide a custom
WidthFunc
to accomodate multi- and zero-width characters (such as runewidth)
Usage
Download the package:
go get -u github.com/rodaine/table
Example:
package main
import (
"fmt"
"strings"
"github.com/fatih/color"
"github.com/rodaine/table"
)
func main() {
headerFmt := color.New(color.FgGreen, color.Underline).SprintfFunc()
columnFmt := color.New(color.FgYellow).SprintfFunc()
tbl := table.New("ID", "Name", "Score", "Added")
tbl.WithHeaderFormatter(headerFmt).WithFirstColumnFormatter(columnFmt)
for _, widget := range getWidgets() {
tbl.AddRow(widget.ID, widget.Name, widget.Cost, widget.Added)
}
tbl.Print()
}
Consult the documentation for further examples and usage information
Contributing
Please feel free to submit an issue or PR to this repository for features or bugs. All submitted code must pass the scripts specified within .travis.yml and should include tests to back up the changes.
License
table is released under the MIT License (Expat). See the full license.