forked from toolshed/abra
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package ansi
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"sort"
 | |
| 
 | |
| 	colorable "github.com/mattn/go-colorable"
 | |
| )
 | |
| 
 | |
| // PrintStyles prints all style combinations to the terminal.
 | |
| func PrintStyles() {
 | |
| 	// for compatibility with Windows, not needed for *nix
 | |
| 	stdout := colorable.NewColorableStdout()
 | |
| 
 | |
| 	bgColors := []string{
 | |
| 		"",
 | |
| 		":black",
 | |
| 		":red",
 | |
| 		":green",
 | |
| 		":yellow",
 | |
| 		":blue",
 | |
| 		":magenta",
 | |
| 		":cyan",
 | |
| 		":white",
 | |
| 	}
 | |
| 
 | |
| 	keys := make([]string, 0, len(Colors))
 | |
| 	for k := range Colors {
 | |
| 		keys = append(keys, k)
 | |
| 	}
 | |
| 
 | |
| 	sort.Sort(sort.StringSlice(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{"+s" + bg, "+i" + bg}))
 | |
| 			fmt.Fprintln(stdout, padColor(fg, []string{"+uh" + bg, "+B" + bg, "+Bb" + bg /* backgrounds */, "" + bg + "+h"}))
 | |
| 			fmt.Fprintln(stdout, padColor(fg, []string{"+b" + bg + "+h", "+bh" + bg + "+h", "+u" + bg + "+h", "+uh" + bg + "+h"}))
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func pad(s string, length int) string {
 | |
| 	for len(s) < length {
 | |
| 		s += " "
 | |
| 	}
 | |
| 	return s
 | |
| }
 | |
| 
 | |
| func padColor(color string, styles []string) string {
 | |
| 	buffer := ""
 | |
| 	for _, style := range styles {
 | |
| 		buffer += Color(pad(color+style, 20), color+style)
 | |
| 	}
 | |
| 	return buffer
 | |
| }
 |