mirror of
https://github.com/go-gitea/gitea.git
synced 2024-08-26 21:54:19 -04:00
137 lines
2.5 KiB
Go
Vendored
137 lines
2.5 KiB
Go
Vendored
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
|
|
}
|