github.com/cellofellow/gopkg@v0.0.0-20140722061823-eec0544a62ad/colorprint/printing.go (about) 1 package colorprint 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func Printf(colorCode, format string, a ...interface{}) { 9 fmt.Printf(colourText(colorCode, format), a...) 10 } 11 12 func Print(colorCode string, a ...interface{}) { 13 fmt.Print(colourText(colorCode, fmt.Sprint(a...))) 14 } 15 16 func Println(colorCode string, a ...interface{}) { 17 Println(fmt.Sprint(a...)) 18 } 19 20 // ColorText returns the text colored according to the color code 21 // (exported version of colourText). 22 func ColorText(colorCode, text string) string { 23 return colourText(colorCode, text) 24 } 25 26 // colourText return a colours text based on the given colour code. 27 func colourText(colorCode, text string) string { 28 var coloredText string 29 30 if len(colorCode) < 1 { 31 return text // nothing to do 32 } 33 34 text = strings.Replace(text, "%", "%%", -1) 35 36 switch colorCode[0] { 37 // foreground 38 case 'r': 39 coloredText = Red(text).String() 40 case 'g': 41 coloredText = Green(text).String() 42 case 'y': 43 coloredText = Yellow(text).String() 44 case 'b': 45 coloredText = Blue(text).String() 46 case 'x': 47 coloredText = Black(text).String() 48 case 'm': 49 coloredText = Magenta(text).String() 50 case 'c': 51 coloredText = Cyan(text).String() 52 case 'w': 53 coloredText = White(text).String() 54 case 'd': 55 coloredText = Default(text).String() 56 57 // background 58 case 'R': 59 coloredText = BgRed(text).String() 60 case 'G': 61 coloredText = BgGreen(text).String() 62 case 'Y': 63 coloredText = BgYellow(text).String() 64 case 'B': 65 coloredText = BgBlue(text).String() 66 67 // case 'X': -> not implemented 68 case 'M': 69 coloredText = BgMagenta(text).String() 70 case 'C': 71 coloredText = BgCyan(text).String() 72 case 'W': 73 coloredText = BgWhite(text).String() 74 case 'D': 75 coloredText = BgDefault(text).String() 76 // specials 77 case '+': 78 coloredText = Bold(text).String() 79 case '*': 80 coloredText = Italic(text).String() 81 case '~': 82 coloredText = Reverse(text).String() 83 case '_': 84 coloredText = Underline(text).String() 85 case '#': 86 coloredText = Blink(text).String() 87 case '?': 88 coloredText = Concealed(text).String() 89 90 // default -> panic 91 default: 92 panic("colorprint: unknown color code") 93 } 94 95 coloredText = strings.Replace(coloredText, "%%", "%", -1) 96 return colourText(colorCode[1:], coloredText) 97 }