summaryrefslogtreecommitdiff
path: root/vendor/github.com/juju/ansiterm/color.go
blob: 0a97de31e53eb4d8b89501a36cffa0b5cdd0f626 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// Copyright 2016 Canonical Ltd.
// Licensed under the LGPLv3, see LICENCE file for details.

package ansiterm

const (
	_ Color = iota
	Default
	Black
	Red
	Green
	Yellow
	Blue
	Magenta
	Cyan
	Gray
	DarkGray
	BrightRed
	BrightGreen
	BrightYellow
	BrightBlue
	BrightMagenta
	BrightCyan
	White
)

// Color represents one of the standard 16 ANSI colors.
type Color int

// String returns the name of the color.
func (c Color) String() string {
	switch c {
	case Default:
		return "default"
	case Black:
		return "black"
	case Red:
		return "red"
	case Green:
		return "green"
	case Yellow:
		return "yellow"
	case Blue:
		return "blue"
	case Magenta:
		return "magenta"
	case Cyan:
		return "cyan"
	case Gray:
		return "gray"
	case DarkGray:
		return "darkgray"
	case BrightRed:
		return "brightred"
	case BrightGreen:
		return "brightgreen"
	case BrightYellow:
		return "brightyellow"
	case BrightBlue:
		return "brightblue"
	case BrightMagenta:
		return "brightmagenta"
	case BrightCyan:
		return "brightcyan"
	case White:
		return "white"
	default:
		return ""
	}
}

func (c Color) foreground() attribute {
	switch c {
	case Default:
		return 39
	case Black:
		return 30
	case Red:
		return 31
	case Green:
		return 32
	case Yellow:
		return 33
	case Blue:
		return 34
	case Magenta:
		return 35
	case Cyan:
		return 36
	case Gray:
		return 37
	case DarkGray:
		return 90
	case BrightRed:
		return 91
	case BrightGreen:
		return 92
	case BrightYellow:
		return 93
	case BrightBlue:
		return 94
	case BrightMagenta:
		return 95
	case BrightCyan:
		return 96
	case White:
		return 97
	default:
		return unknownAttribute
	}
}

func (c Color) background() attribute {
	value := c.foreground()
	if value != unknownAttribute {
		return value + 10
	}
	return value
}