github.com/goccy/go-json@v0.10.3-0.20240509105655-5e2ae3f23c1d/color.go (about) 1 package json 2 3 import ( 4 "fmt" 5 6 "github.com/goccy/go-json/internal/encoder" 7 ) 8 9 type ( 10 ColorFormat = encoder.ColorFormat 11 ColorScheme = encoder.ColorScheme 12 ) 13 14 const escape = "\x1b" 15 16 type colorAttr int 17 18 //nolint:deadcode,varcheck 19 const ( 20 fgBlackColor colorAttr = iota + 30 21 fgRedColor 22 fgGreenColor 23 fgYellowColor 24 fgBlueColor 25 fgMagentaColor 26 fgCyanColor 27 fgWhiteColor 28 ) 29 30 //nolint:deadcode,varcheck 31 const ( 32 fgHiBlackColor colorAttr = iota + 90 33 fgHiRedColor 34 fgHiGreenColor 35 fgHiYellowColor 36 fgHiBlueColor 37 fgHiMagentaColor 38 fgHiCyanColor 39 fgHiWhiteColor 40 ) 41 42 func createColorFormat(attr colorAttr) ColorFormat { 43 return ColorFormat{ 44 Header: wrapColor(attr), 45 Footer: resetColor(), 46 } 47 } 48 49 func wrapColor(attr colorAttr) string { 50 return fmt.Sprintf("%s[%dm", escape, attr) 51 } 52 53 func resetColor() string { 54 return wrapColor(colorAttr(0)) 55 } 56 57 var ( 58 DefaultColorScheme = &ColorScheme{ 59 Int: createColorFormat(fgHiMagentaColor), 60 Uint: createColorFormat(fgHiMagentaColor), 61 Float: createColorFormat(fgHiMagentaColor), 62 Bool: createColorFormat(fgHiYellowColor), 63 String: createColorFormat(fgHiGreenColor), 64 Binary: createColorFormat(fgHiRedColor), 65 ObjectKey: createColorFormat(fgHiCyanColor), 66 Null: createColorFormat(fgBlueColor), 67 } 68 )