1package ansi 2 3import ( 4 "fmt" 5 "sort" 6 7 colorable "github.com/mattn/go-colorable" 8) 9 10// PrintStyles prints all style combinations to the terminal. 11func PrintStyles() { 12 // for compatibility with Windows, not needed for *nix 13 stdout := colorable.NewColorableStdout() 14 15 bgColors := []string{ 16 "", 17 ":black", 18 ":red", 19 ":green", 20 ":yellow", 21 ":blue", 22 ":magenta", 23 ":cyan", 24 ":white", 25 } 26 27 keys := make([]string, 0, len(Colors)) 28 for k := range Colors { 29 keys = append(keys, k) 30 } 31 32 sort.Sort(sort.StringSlice(keys)) 33 34 for _, fg := range keys { 35 for _, bg := range bgColors { 36 fmt.Fprintln(stdout, padColor(fg, []string{"" + bg, "+b" + bg, "+bh" + bg, "+u" + bg})) 37 fmt.Fprintln(stdout, padColor(fg, []string{"+s" + bg, "+i" + bg})) 38 fmt.Fprintln(stdout, padColor(fg, []string{"+uh" + bg, "+B" + bg, "+Bb" + bg /* backgrounds */, "" + bg + "+h"})) 39 fmt.Fprintln(stdout, padColor(fg, []string{"+b" + bg + "+h", "+bh" + bg + "+h", "+u" + bg + "+h", "+uh" + bg + "+h"})) 40 } 41 } 42} 43 44func pad(s string, length int) string { 45 for len(s) < length { 46 s += " " 47 } 48 return s 49} 50 51func padColor(color string, styles []string) string { 52 buffer := "" 53 for _, style := range styles { 54 buffer += Color(pad(color+style, 20), color+style) 55 } 56 return buffer 57} 58