package tablewriter
import (
"fmt"
"strconv"
"strings"
)
const ESC = "\033"
const SEP = ";"
const (
BgBlackColor int = iota + 40
BgRedColor
BgGreenColor
BgYellowColor
BgBlueColor
BgMagentaColor
BgCyanColor
BgWhiteColor
)
const (
FgBlackColor int = iota + 30
FgRedColor
FgGreenColor
FgYellowColor
FgBlueColor
FgMagentaColor
FgCyanColor
FgWhiteColor
)
const (
BgHiBlackColor int = iota + 100
BgHiRedColor
BgHiGreenColor
BgHiYellowColor
BgHiBlueColor
BgHiMagentaColor
BgHiCyanColor
BgHiWhiteColor
)
const (
FgHiBlackColor int = iota + 90
FgHiRedColor
FgHiGreenColor
FgHiYellowColor
FgHiBlueColor
FgHiMagentaColor
FgHiCyanColor
FgHiWhiteColor
)
const (
Normal = 0
Bold = 1
UnderlineSingle = 4
Italic
)
type Colors []int
func startFormat(seq string ) string {
return fmt .Sprintf ("%s[%sm" , ESC , seq )
}
func stopFormat() string {
return fmt .Sprintf ("%s[%dm" , ESC , Normal )
}
func makeSequence(codes []int ) string {
codesInString := []string {}
for _ , code := range codes {
codesInString = append (codesInString , strconv .Itoa (code ))
}
return strings .Join (codesInString , SEP )
}
func format(s string , codes interface {}) string {
var seq string
switch v := codes .(type ) {
case string :
seq = v
case []int :
seq = makeSequence (v )
case Colors :
seq = makeSequence (v )
default :
return s
}
if len (seq ) == 0 {
return s
}
return startFormat (seq ) + s + stopFormat ()
}
func (t *Table ) SetHeaderColor (colors ...Colors ) {
if t .colSize != len (colors ) {
panic ("Number of header colors must be equal to number of headers." )
}
for i := 0 ; i < len (colors ); i ++ {
t .headerParams = append (t .headerParams , makeSequence (colors [i ]))
}
}
func (t *Table ) SetColumnColor (colors ...Colors ) {
if t .colSize != len (colors ) {
panic ("Number of column colors must be equal to number of headers." )
}
for i := 0 ; i < len (colors ); i ++ {
t .columnsParams = append (t .columnsParams , makeSequence (colors [i ]))
}
}
func (t *Table ) SetFooterColor (colors ...Colors ) {
if len (t .footers ) != len (colors ) {
panic ("Number of footer colors must be equal to number of footer." )
}
for i := 0 ; i < len (colors ); i ++ {
t .footerParams = append (t .footerParams , makeSequence (colors [i ]))
}
}
func Color (colors ...int ) []int {
return colors
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .