33 lines
748 B
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
|
|
}
|