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  }