memos/store/custom_icon.go

33 lines
748 B
Go

package store
import (
"strings"
"github.com/pkg/errors"
"github.com/usememos/memos/internal/markdown/parser"
)
func validateEmojiIcon(emoji string) error {
if !parser.IsEmoji(emoji) {
return errors.New("icon must contain one fully qualified emoji")
}
return nil
}
func validateLucideIcon(name string) error {
if len(name) == 0 || len(name) > 128 {
return errors.New("icon name must contain 1 to 128 bytes")
}
for _, part := range strings.Split(name, "-") {
if part == "" {
return errors.New("icon name must use lowercase kebab-case")
}
for _, char := range part {
if (char < 'a' || char > 'z') && (char < '0' || char > '9') {
return errors.New("icon name must use lowercase kebab-case")
}
}
}
return nil
}