46 lines · 1.1 KB · Go
RawDownload
// 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 colorvar colorPattern = regexp.MustCompile("^#?(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{3})$") // Label represents label information loaded from templatetype 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 codefunc 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}