package main import ( "fmt" "sort" "strconv" "github.com/mattn/go-colorable" "github.com/mgutz/ansi" ) func main() { printColors() print256Colors() printConstants() } func pad(s string, length int) string { for len(s) < length { s += " " } return s } func padColor(s string, styles []string) string { buffer := "" for _, style := range styles { buffer += ansi.Color(pad(s+style, 20), s+style) } return buffer } func printPlain() { ansi.DisableColors(true) bgColors := []string{ "", ":black", ":red", ":green", ":yellow", ":blue", ":magenta", ":cyan", ":white", } for fg := range ansi.Colors { for _, bg := range bgColors { println(padColor(fg, []string{"" + bg, "+b" + bg, "+bh" + bg, "+u" + bg})) println(padColor(fg, []string{"+uh" + bg, "+B" + bg, "+Bb" + bg /* backgrounds */, "" + bg + "+h"})) println(padColor(fg, []string{"+b" + bg + "+h", "+bh" + bg + "+h", "+u" + bg + "+h", "+uh" + bg + "+h"})) } } } func printColors() { ansi.DisableColors(false) stdout := colorable.NewColorableStdout() bgColors := []string{ "", ":black", ":red", ":green", ":yellow", ":blue", ":magenta", ":cyan", ":white", } keys := []string{} for fg := range ansi.Colors { _, err := strconv.Atoi(fg) if err != nil { keys = append(keys, fg) } } sort.Strings(keys) for _, fg := range keys { for _, bg := range bgColors { fmt.Fprintln(stdout, padColor(fg, []string{"" + bg, "+b" + bg, "+bh" + bg, "+u" + bg})) fmt.Fprintln(stdout, padColor(fg, []string{"+uh" + bg, "+B" + bg, "+Bb" + bg /* backgrounds */, "" + bg + "+h", "+s" + bg})) fmt.Fprintln(stdout, padColor(fg, []string{"+b" + bg + "+h", "+bh" + bg + "+h", "+u" + bg + "+h", "+uh" + bg + "+h"})) } } } func print256Colors() { ansi.DisableColors(false) stdout := colorable.NewColorableStdout() bgColors := []string{""} for i := 0; i < 256; i++ { key := fmt.Sprintf(":%d", i) bgColors = append(bgColors, key) } keys := []string{} for fg := range ansi.Colors { n, err := strconv.Atoi(fg) if err == nil { keys = append(keys, fmt.Sprintf("%3d", n)) } } sort.Strings(keys) for _, fg := range keys { for _, bg := range bgColors { fmt.Fprintln(stdout, padColor(fg, []string{"" + bg, "+b" + bg, "+u" + bg})) fmt.Fprintln(stdout, padColor(fg, []string{"+B" + bg, "+Bb" + bg, "+s" + bg})) } } } func printConstants() { stdout := colorable.NewColorableStdout() fmt.Fprintln(stdout, ansi.DefaultFG, "ansi.DefaultFG", ansi.Reset) fmt.Fprintln(stdout, ansi.Black, "ansi.Black", ansi.Reset) fmt.Fprintln(stdout, ansi.Red, "ansi.Red", ansi.Reset) fmt.Fprintln(stdout, ansi.Green, "ansi.Green", ansi.Reset) fmt.Fprintln(stdout, ansi.Yellow, "ansi.Yellow", ansi.Reset) fmt.Fprintln(stdout, ansi.Blue, "ansi.Blue", ansi.Reset) fmt.Fprintln(stdout, ansi.Magenta, "ansi.Magenta", ansi.Reset) fmt.Fprintln(stdout, ansi.Cyan, "ansi.Cyan", ansi.Reset) fmt.Fprintln(stdout, ansi.White, "ansi.White", ansi.Reset) fmt.Fprintln(stdout, ansi.LightBlack, "ansi.LightBlack", ansi.Reset) fmt.Fprintln(stdout, ansi.LightRed, "ansi.LightRed", ansi.Reset) fmt.Fprintln(stdout, ansi.LightGreen, "ansi.LightGreen", ansi.Reset) fmt.Fprintln(stdout, ansi.LightYellow, "ansi.LightYellow", ansi.Reset) fmt.Fprintln(stdout, ansi.LightBlue, "ansi.LightBlue", ansi.Reset) fmt.Fprintln(stdout, ansi.LightMagenta, "ansi.LightMagenta", ansi.Reset) fmt.Fprintln(stdout, ansi.LightCyan, "ansi.LightCyan", ansi.Reset) fmt.Fprintln(stdout, ansi.LightWhite, "ansi.LightWhite", ansi.Reset) }