-
Notifications
You must be signed in to change notification settings - Fork 6
/
color.go
132 lines (127 loc) · 3.32 KB
/
color.go
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
120
121
122
123
124
125
126
127
128
129
130
131
132
package colors
// Color is a Minecraft color code type
type Color rune
var (
// Black is Minecraft color code §0 (#000000)
Black Color = '0'
// DarkBlue is Minecraft color code §1 (#0000aa)
DarkBlue Color = '1'
// DarkGreen is Minecraft color code §2 (#00aa00)
DarkGreen Color = '2'
// DarkAqua is Minecraft color code §3 (#00aaaa)
DarkAqua Color = '3'
// DarkRed is Minecraft color code §4 (#aa0000)
DarkRed Color = '4'
// DarkPurple is Minecraft color code §5 (#aa00aa)
DarkPurple Color = '5'
// Gold is Minecraft color code §6 (#ffaa00)
Gold Color = '6'
// Gray is Minecraft color code §7 (#aaaaaa)
Gray Color = '7'
// DarkGray is Minecraft color code §8 (#555555)
DarkGray Color = '8'
// Blue is Minecraft color code §9 (#5555ff)
Blue Color = '9'
// Green is Minecraft color code §a (#55ff55)
Green Color = 'a'
// Aqua is Minecraft color code §b (#55ffff)
Aqua Color = 'b'
// Red is Minecraft color code §c (#ff5555)
Red Color = 'c'
// LightPurple is Minecraft color code §d (#ff55ff)
LightPurple Color = 'd'
// Yellow is Minecraft color code §e (#ffff55)
Yellow Color = 'e'
// White is Minecraft color code §f (#ffffff)
White Color = 'f'
// MinecoinGold is Minecraft color code §g (#ddd605)
MinecoinGold Color = 'g'
// Unknown is an unknown parsed color
Unknown Color = '-'
)
// Parse attempts to return a Color type based on a color code string, color name string, or a Color type itself
func Parse(value interface{}) (Color, bool) {
switch value {
case '0', "0", "black", Black:
return Black, true
case '1', "1", "dark_blue", DarkBlue:
return DarkBlue, true
case '2', "2", "dark_green", DarkGreen:
return DarkGreen, true
case '3', "3", "dark_aqua", DarkAqua:
return DarkAqua, true
case '4', "4", "dark_red", DarkRed:
return DarkRed, true
case '5', "5", "dark_purple", DarkPurple:
return DarkPurple, true
case '6', "6", "gold", Gold:
return Gold, true
case '7', "7", "gray", Gray:
return Gray, true
case '8', "8", "dark_gray", DarkGray:
return DarkGray, true
case '9', "9", "blue", Blue:
return Blue, true
case 'a', "a", "green", Green:
return Green, true
case 'b', "b", "aqua", Aqua:
return Aqua, true
case 'c', "c", "red", Red:
return Red, true
case 'd', "d", "light_purple", LightPurple:
return LightPurple, true
case 'e', "e", "yellow", Yellow:
return Yellow, true
case 'f', "f", "white", White:
return White, true
case 'g', "g", "minecoin_gold", MinecoinGold:
return MinecoinGold, true
default:
return Unknown, false
}
}
// ToRaw returns the encoded Minecraft formatting of the color (§ + code)
func (c Color) ToRaw() string {
return "\u00A7" + string(c)
}
// ToHex returns the hex string of the color prefixed with a # symbol
func (c Color) ToHex() string {
switch c {
case Black:
return "#000000"
case DarkBlue:
return "#0000aa"
case DarkGreen:
return "#00aa00"
case DarkAqua:
return "#00aaaa"
case DarkRed:
return "#aa0000"
case DarkPurple:
return "#aa00aa"
case Gold:
return "#ffaa00"
case Gray:
return "#aaaaaa"
case DarkGray:
return "#555555"
case Blue:
return "#5555ff"
case Green:
return "#55ff55"
case Aqua:
return "#55ffff"
case Red:
return "#ff5555"
case LightPurple:
return "#ff55ff"
case Yellow:
return "#ffff55"
case White:
return "#ffffff"
case MinecoinGold:
return "#ddd605"
default:
return "#ffffff"
}
}