This package allows to generate and display ascii tables in the terminal, f.e.:
+----+------------------+--------------+-----------------------------+------+
| # | NAME | PHONE | EMAIL | QTTY |
+----+------------------+--------------+-----------------------------+------+
| 1 | Newton G. Goetz | 252-585-5166 | NewtonGGoetz@dayrep.com | 10 |
| 2 | Rebecca R. Edney | 865-475-4171 | RebeccaREdney@armyspy.com | 12 |
| 3 | John R. Jackson | 810-325-1417 | JohnRJackson@armyspy.com | 15 |
| 4 | Ron J. Gomes | 217-450-8568 | RonJGomes@rhyta.com | 25 |
| 5 | Penny R. Lewis | 870-794-1666 | PennyRLewis@rhyta.com | 5 |
| 6 | Sofia J. Smith | 770-333-7379 | SofiaJSmith@armyspy.com | 3 |
| 7 | Karlene D. Owen | 231-242-4157 | KarleneDOwen@jourrapide.com | 12 |
| 8 | Daniel L. Love | 978-210-4178 | DanielLLove@rhyta.com | 44 |
| 9 | Julie T. Dial | 719-966-5354 | JulieTDial@jourrapide.com | 8 |
| 10 | Juan J. Kennedy | 908-910-8893 | JuanJKennedy@dayrep.com | 16 |
+----+------------------+--------------+-----------------------------+------+
| Subtotal | 150 |
+----+------------------+--------------+-----------------------------+------+
There are the following key features:
Cell.Span
attribute description.$ go get -u github.com/alexeyco/simpletable
To run unit tests:
$ cd $GOPATH/src/github.com/alexeyco/simpletable
$ go test -cover
To run benchmarks:
$ cd $GOPATH/src/github.com/alexeyco/simpletable
$ go test -bench=.
Comparison with similar libraries see _example/main.go/_example/03-benchmarks-with-others
package main
import (
"fmt"
"github.com/alexeyco/simpletable"
)
var (
data = [][]interface{}{
{1, "Newton G. Goetz", 532.7},
{2, "Rebecca R. Edney", 1423.25},
{3, "John R. Jackson", 7526.12},
{4, "Ron J. Gomes", 123.84},
{5, "Penny R. Lewis", 3221.11},
}
)
func main() {
table := simpletable.New()
table.Header = &simpletable.Header{
Cells: []*simpletable.Cell{
{Align: simpletable.AlignCenter, Text: "#"},
{Align: simpletable.AlignCenter, Text: "NAME"},
{Align: simpletable.AlignCenter, Text: "TAX"},
},
}
subtotal := float64(0)
for _, row := range data {
r := []*simpletable.Cell{
{Align: simpletable.AlignRight, Text: fmt.Sprintf("%d", row[0].(int))},
{Text: row[1].(string)},
{Align: simpletable.AlignRight, Text: fmt.Sprintf("$ %.2f", row[2].(float64))},
}
table.Body.Cells = append(table.Body.Cells, r)
subtotal += row[2].(float64)
}
table.Footer = &simpletable.Footer{
Cells: []*simpletable.Cell{
{},
{Align: simpletable.AlignRight, Text: "Subtotal"},
{Align: simpletable.AlignRight, Text: fmt.Sprintf("$ %.2f", subtotal)},
},
}
table.SetStyle(simpletable.StyleCompactLite)
fmt.Println(table.String())
}
Result:
# NAME TAX
--- ------------------ ------------
1 Newton G. Goetz $ 532.70
2 Rebecca R. Edney $ 1423.25
3 John R. Jackson $ 7526.12
4 Ron J. Gomes $ 123.84
5 Penny R. Lewis $ 3221.11
--- ------------------ ------------
Subtotal $ 12827.02
You can see also _example/main.go/01-styles-demo/main.go for styles demonstration.
$ cd $GOPATH/src/github.com/alexeyco/simpletable/_example/01-styles-demo
$ go run main.go
More examples: For more examples see _example directory:
$ cd $GOPATH/src/github.com/alexeyco/simpletable/_example
$ ls -F | grep /
01-styles-demo/
02-ugly-span/
03-benchmarks-with-others/
04-multiline/
There is 6 styles available. To view them, run _example/main.go/01-styles-demo/main.go:
$ cd $GOPATH/src/github.com/alexeyco/simpletable/_example/01-styles-demo
$ go run main.go
You can set cell content alignment:
c := &simpletable.Cell{
// or simpletable.AlignLeft (default), or simpletable.AlignCenter
Align: simpletable.AlignRight,
Content: "Subtotal",
}
By analogy with HTML:
c := &simpletable.Cell{
Span: 2, // Default: 1
Content: "Subtotal",
}
Note: by default Span
is 1
. If you try to set it to 0
, the value will still be 1
.
Author: Alexeyco
Source Code: https://github.com/alexeyco/simpletable
License: MIT license