mirror of https://github.com/goccy/go-json.git
72 lines
1.4 KiB
Go
72 lines
1.4 KiB
Go
package json
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/goccy/go-json/internal/encoder"
|
|
)
|
|
|
|
type (
|
|
ColorFormat = encoder.ColorFormat
|
|
ColorScheme = encoder.ColorScheme
|
|
)
|
|
|
|
const escape = "\x1b"
|
|
|
|
type colorAttr int
|
|
|
|
const (
|
|
fgBlackColor colorAttr = iota + 30
|
|
fgRedColor
|
|
fgGreenColor
|
|
fgYellowColor
|
|
fgBlueColor
|
|
fgMagentaColor
|
|
fgCyanColor
|
|
fgWhiteColor
|
|
)
|
|
|
|
const (
|
|
fgHiBlackColor colorAttr = iota + 90
|
|
fgHiRedColor
|
|
fgHiGreenColor
|
|
fgHiYellowColor
|
|
fgHiBlueColor
|
|
fgHiMagentaColor
|
|
fgHiCyanColor
|
|
fgHiWhiteColor
|
|
)
|
|
|
|
func createColorFormat(attr colorAttr) ColorFormat {
|
|
return ColorFormat{
|
|
Header: wrapColor(attr),
|
|
Footer: resetColor(),
|
|
}
|
|
}
|
|
|
|
func wrapColor(attr colorAttr) string {
|
|
return fmt.Sprintf("%s[%dm", escape, attr)
|
|
}
|
|
|
|
func resetColor() string {
|
|
return wrapColor(colorAttr(0))
|
|
}
|
|
|
|
var (
|
|
DefaultColorScheme = &ColorScheme{
|
|
Int: createColorFormat(fgHiMagentaColor),
|
|
Uint: createColorFormat(fgHiMagentaColor),
|
|
Float: createColorFormat(fgHiMagentaColor),
|
|
Bool: createColorFormat(fgHiYellowColor),
|
|
String: createColorFormat(fgHiGreenColor),
|
|
Binary: createColorFormat(fgHiRedColor),
|
|
ObjectStart: createColorFormat(fgWhiteColor),
|
|
ObjectKey: createColorFormat(fgHiCyanColor),
|
|
ObjectEnd: createColorFormat(fgWhiteColor),
|
|
ArrayStart: createColorFormat(fgWhiteColor),
|
|
ArrayEnd: createColorFormat(fgWhiteColor),
|
|
Colon: createColorFormat(fgWhiteColor),
|
|
Null: createColorFormat(fgBlueColor),
|
|
}
|
|
)
|