2024-03-13 12:53:33 -03:00
|
|
|
package nip54
|
|
|
|
|
|
|
|
import (
|
|
|
|
"strings"
|
2024-03-13 16:36:08 -03:00
|
|
|
"unicode"
|
2024-03-13 12:53:33 -03:00
|
|
|
|
|
|
|
"golang.org/x/text/transform"
|
|
|
|
"golang.org/x/text/unicode/norm"
|
|
|
|
)
|
|
|
|
|
|
|
|
func NormalizeIdentifier(name string) string {
|
2024-03-13 19:26:37 -03:00
|
|
|
name = strings.TrimSpace(strings.ToLower(name))
|
2024-03-13 12:53:33 -03:00
|
|
|
res, _, _ := transform.Bytes(norm.NFKC, []byte(name))
|
2024-03-13 16:36:08 -03:00
|
|
|
runes := []rune(string(res))
|
|
|
|
|
|
|
|
b := make([]rune, len(runes))
|
|
|
|
for i, letter := range runes {
|
2024-05-10 17:58:21 -03:00
|
|
|
if unicode.IsLetter(letter) || unicode.IsNumber(letter) {
|
2024-03-13 16:36:08 -03:00
|
|
|
b[i] = letter
|
|
|
|
} else {
|
|
|
|
b[i] = '-'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return string(b)
|
2024-03-13 12:53:33 -03:00
|
|
|
}
|