This commit is contained in:
Daniel Goc
2026-04-13 14:29:36 +02:00
parent 8024d9f739
commit 88255776f3
9 changed files with 121 additions and 104 deletions

View File

@@ -4,6 +4,7 @@ import (
"strings"
"unicode"
"git.ma-al.com/goc_daniel/b2b/app/db"
constdata "git.ma-al.com/goc_daniel/b2b/app/utils/const_data"
"github.com/dlclark/regexp2"
"golang.org/x/text/runes"
@@ -22,7 +23,7 @@ func SanitizeSlug(s string) string {
s = strings.TrimSpace(strings.ToLower(s))
// First apply explicit transliteration for language-specific letters.
s = transliterateWithTable(s)
s = transliterateSlug(s)
// Then normalize and strip any remaining combining marks.
s = removeDiacritics(s)
@@ -40,19 +41,17 @@ func SanitizeSlug(s string) string {
return s
}
func transliterateWithTable(s string) string {
var b strings.Builder
b.Grow(len(s))
func transliterateSlug(s string) string {
var cleared string
for _, r := range s {
if repl, ok := constdata.TRANSLITERATION_TABLE[r]; ok {
b.WriteString(repl)
} else {
b.WriteRune(r)
}
err := db.DB.Raw("SELECT slugify_eu(?)", s).Scan(&cleared).Error
if err != nil {
// log error
_ = err
return s
}
return b.String()
return cleared
}
func removeDiacritics(s string) string {