fix: preserve + and . in wiki slugs #218

Merged
jmiller merged 1 commits from fix/wiki-slug-polish into dev 2026-05-26 18:48:11 +00:00
+5 -3
View File
@@ -150,16 +150,18 @@ func WebPathFromRequest(s string) WebPath {
}
var multiHyphenRe = regexp.MustCompile(`-{2,}`)
var nonAlphanumRe = regexp.MustCompile(`[^a-zA-Z0-9\-]`)
var nonSlugRe = regexp.MustCompile(`[^a-zA-Z0-9+.\-]`)
// sanitizeWikiTitle converts a user-provided title into a clean, URL-friendly slug.
// Spaces and special characters become hyphens, consecutive hyphens collapse to one.
// Preserves: letters, digits, hyphens, plus signs (+), and dots (.)
func sanitizeWikiTitle(title string) string {
title = strings.TrimSpace(title)
title = strings.ReplaceAll(title, " ", "-")
title = nonAlphanumRe.ReplaceAllString(title, "-")
title = nonSlugRe.ReplaceAllString(title, "-")
title = multiHyphenRe.ReplaceAllString(title, "-")
title = strings.Trim(title, "-")
title = strings.NewReplacer("-+-", "-", "+-", "-", "-+", "-").Replace(title) // clean stray plus signs
title = strings.Trim(title, "-+.")
return title
}