summaryrefslogtreecommitdiffstats
path: root/modules/label/label.go
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-10-11 10:27:00 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-10-11 10:27:00 +0000
commit65aa53fc52ff15efe54df4147564828d535837f8 (patch)
tree31c51dad04fdcca80e6d3043c8bd49d2f1a51f83 /modules/label/label.go
parentInitial commit. (diff)
downloadforgejo-debian.tar.xz
forgejo-debian.zip
Adding upstream version 8.0.3.HEADupstream/8.0.3upstreamdebian
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'modules/label/label.go')
-rw-r--r--modules/label/label.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/modules/label/label.go b/modules/label/label.go
new file mode 100644
index 00000000..d3ef0e1d
--- /dev/null
+++ b/modules/label/label.go
@@ -0,0 +1,46 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package label
+
+import (
+ "fmt"
+ "regexp"
+ "strings"
+)
+
+// colorPattern is a regexp which can validate label color
+var colorPattern = regexp.MustCompile("^#?(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{3})$")
+
+// Label represents label information loaded from template
+type Label struct {
+ Name string `yaml:"name"`
+ Color string `yaml:"color"`
+ Description string `yaml:"description,omitempty"`
+ Exclusive bool `yaml:"exclusive,omitempty"`
+}
+
+// NormalizeColor normalizes a color string to a 6-character hex code
+func NormalizeColor(color string) (string, error) {
+ // normalize case
+ color = strings.TrimSpace(strings.ToLower(color))
+
+ // add leading hash
+ if len(color) == 6 || len(color) == 3 {
+ color = "#" + color
+ }
+
+ if !colorPattern.MatchString(color) {
+ return "", fmt.Errorf("bad color code: %s", color)
+ }
+
+ // convert 3-character shorthand into 6-character version
+ if len(color) == 4 {
+ r := color[1]
+ g := color[2]
+ b := color[3]
+ color = fmt.Sprintf("#%c%c%c%c%c%c", r, r, g, g, b, b)
+ }
+
+ return color, nil
+}