Skip to content

Commit c4f86bc

Browse files
authoredNov 8, 2022
feat: Get by name (#6)
* feat: Get by name Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com> * fix: variant Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
1 parent c1550f3 commit c4f86bc

File tree

2 files changed

+52
-4
lines changed

2 files changed

+52
-4
lines changed
 

‎main.go

+19-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package catppuccingo
22

3-
import "image/color"
3+
import (
4+
"image/color"
5+
"strings"
6+
)
47

58
// Flavour is an interface implemented by all Catppuccin variations.
69
type Flavour interface {
@@ -49,3 +52,18 @@ func (c Color) RGBA() (r uint32, g uint32, b uint32, a uint32) {
4952
}
5053

5154
var _ color.Color = Color{}
55+
56+
// Variant returns the Theme variant by name.
57+
func Variant(flavour string) Theme {
58+
for _, t := range []Theme{
59+
Mocha,
60+
Frappe,
61+
Macchiato,
62+
Latte,
63+
} {
64+
if strings.EqualFold(t.Name(), flavour) {
65+
return t
66+
}
67+
}
68+
return nil
69+
}

‎main_test.go

+33-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,38 @@
11
package catppuccingo
22

3-
import (
4-
"testing"
5-
)
3+
import "testing"
4+
5+
func TestVariant(t *testing.T) {
6+
for s, ss := range map[string]string{
7+
"moCha": Mocha.Name(),
8+
"Mocha": Mocha.Name(),
9+
"MOCHA": Mocha.Name(),
10+
"mocha": Mocha.Name(),
11+
"Frappe": Frappe.Name(),
12+
"frappe": Frappe.Name(),
13+
"MaccHiaTo": Macchiato.Name(),
14+
"latte": Latte.Name(),
15+
} {
16+
t.Run(s, func(t *testing.T) {
17+
if Variant(s).Name() != ss {
18+
t.Errorf("expected %q, got %q", ss, Variant(s).Name())
19+
}
20+
})
21+
}
22+
t.Run("invalid", func(t *testing.T) {
23+
v := Variant("invalid")
24+
if v != nil {
25+
t.Errorf("expected nil, got %v", v)
26+
}
27+
})
28+
}
29+
30+
func TestColor(t *testing.T) {
31+
r, g, b, a := Mocha.Base().RGBA()
32+
if 30 != r || 30 != g || b != 46 || a != 1 {
33+
t.Fatalf("expected rgba=%d %d %d %d, got %d %d %d %d", 30, 30, 46, 1, r, g, b, a)
34+
}
35+
}
636

737
func TestFlavours(t *testing.T) {
838
for _, flavour := range []Flavour{

0 commit comments

Comments
 (0)
Please sign in to comment.