mirror of
https://gitea.com/Sirherobrine23/tea.git
synced 2024-08-20 20:57:25 +00:00
* github.com/araddon/dateparse upgrade => v0.0.0-20200409225146-d820a6159ab1 * code.gitea.io/sdk/gitea upgrade => v0.11.3 * github.com/olekukonko/tablewriter upgrade => v0.0.4 * github.com/mattn/go-runewidth upgrade => v0.0.9 * github.com/stretchr/testify upgrade => v1.5.1 * github.com/davecgh/go-spew upgrade => v1.1.1 * github.com/urfave/cli/v2 upgrade => v2.2.0 Co-authored-by: 6543 <6543@obermui.de> Reviewed-on: https://gitea.com/gitea/tea/pulls/129 Reviewed-by: techknowlogick <techknowlogick@gitea.io> Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
137 lines
2.5 KiB
Go
137 lines
2.5 KiB
Go
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)
|
|
}
|
|
|
|
// Making the SGR (Select Graphic Rendition) sequence.
|
|
func makeSequence(codes []int) string {
|
|
codesInString := []string{}
|
|
for _, code := range codes {
|
|
codesInString = append(codesInString, strconv.Itoa(code))
|
|
}
|
|
return strings.Join(codesInString, SEP)
|
|
}
|
|
|
|
// Adding ANSI escape sequences before and after string
|
|
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()
|
|
}
|
|
|
|
// Adding header colors (ANSI codes)
|
|
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]))
|
|
}
|
|
}
|
|
|
|
// Adding column colors (ANSI codes)
|
|
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]))
|
|
}
|
|
}
|
|
|
|
// Adding column colors (ANSI codes)
|
|
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
|
|
}
|