forked from jaswdr/faker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
color.go
82 lines (67 loc) · 2.91 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
package faker
import (
"strconv"
"strings"
)
var (
colorLetters = []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"}
safeColorNames = []string{"black", "maroon", "green", "navy", "olive",
"purple", "teal", "lime", "blue", "silver",
"gray", "yellow", "fuchsia", "aqua", "white"}
allColorNames = []string{"AliceBlue", "AntiqueWhite", "Aqua", "Aquamarine",
"Azure", "Beige", "Bisque", "Black", "BlanchedAlmond",
"Blue", "BlueViolet", "Brown", "BurlyWood", "CadetBlue",
"Chartreuse", "Chocolate", "Coral", "CornflowerBlue",
"Cornsilk", "Crimson", "Cyan", "DarkBlue", "DarkCyan",
"DarkGoldenRod", "DarkGray", "DarkGreen", "DarkKhaki",
"DarkMagenta", "DarkOliveGreen", "Darkorange", "DarkOrchid",
"DarkRed", "DarkSalmon", "DarkSeaGreen", "DarkSlateBlue",
"DarkSlateGray", "DarkTurquoise", "DarkViolet", "DeepPink",
"DeepSkyBlue", "DimGray", "DimGrey", "DodgerBlue", "FireBrick",
"FloralWhite", "ForestGreen", "Fuchsia", "Gainsboro", "GhostWhite",
"Gold", "GoldenRod", "Gray", "Green", "GreenYellow", "HoneyDew",
"HotPink", "IndianRed", "Indigo", "Ivory", "Khaki", "Lavender",
"LavenderBlush", "LawnGreen", "LemonChiffon", "LightBlue", "LightCoral",
"LightCyan", "LightGoldenRodYellow", "LightGray", "LightGreen", "LightPink",
"LightSalmon", "LightSeaGreen", "LightSkyBlue", "LightSlateGray", "LightSteelBlue",
"LightYellow", "Lime", "LimeGreen", "Linen", "Magenta", "Maroon", "MediumAquaMarine",
"MediumBlue", "MediumOrchid", "MediumPurple", "MediumSeaGreen", "MediumSlateBlue",
"MediumSpringGreen", "MediumTurquoise", "MediumVioletRed", "MidnightBlue",
"MintCream", "MistyRose", "Moccasin", "NavajoWhite", "Navy", "OldLace", "Olive",
"OliveDrab", "Orange", "OrangeRed", "Orchid", "PaleGoldenRod", "PaleGreen",
"PaleTurquoise", "PaleVioletRed", "PapayaWhip", "PeachPuff", "Peru", "Pink", "Plum",
"PowderBlue", "Purple", "Red", "RosyBrown", "RoyalBlue", "SaddleBrown", "Salmon",
"SandyBrown", "SeaGreen", "SeaShell", "Sienna", "Silver", "SkyBlue", "SlateBlue",
"SlateGray", "Snow", "SpringGreen", "SteelBlue", "Tan", "Teal", "Thistle", "Tomato",
"Turquoise", "Violet", "Wheat", "White", "WhiteSmoke", "Yellow", "YellowGreen"}
)
type Color struct {
Faker *Faker
}
func (c Color) Hex() string {
color := "#"
for i := 0; i < 6; i++ {
color = color + c.Faker.RandomStringElement(colorLetters)
}
return color
}
func (c Color) RGB() string {
color := strconv.Itoa(c.Faker.IntBetween(0, 255))
for i := 0; i < 2; i++ {
color = color + "," + strconv.Itoa(c.Faker.IntBetween(0, 255))
}
return color
}
func (c Color) RGBAsArray() [3]string {
split := strings.Split(c.RGB(), ",")
return [3]string{split[0], split[1], split[2]}
}
func (c Color) CSS() string {
return "rgb(" + c.RGB() + ")"
}
func (c Color) SafeColorName() string {
return c.Faker.RandomStringElement(safeColorNames)
}
func (c Color) ColorName() string {
return c.Faker.RandomStringElement(allColorNames)
}