Prevent transliterated slugs exceeding limit
Transliteration during slug generation can cause slugs to exceed their 80-character limit. This fixes that by making a second truncation pass on the slug during generation. Originally reported on the forum: https://discuss.write.as/t/title-convert-to-url-function-bug-under-chinese/723
This commit is contained in:
parent
71fb63580a
commit
31b521c11c
14
posts.go
14
posts.go
|
@ -1118,10 +1118,20 @@ func getSlugFromPost(title, body, lang string) string {
|
||||||
title = parse.PostLede(title, false)
|
title = parse.PostLede(title, false)
|
||||||
// Truncate lede if needed
|
// Truncate lede if needed
|
||||||
title, _ = parse.TruncToWord(title, 80)
|
title, _ = parse.TruncToWord(title, 80)
|
||||||
|
var s string
|
||||||
if lang != "" && len(lang) == 2 {
|
if lang != "" && len(lang) == 2 {
|
||||||
return slug.MakeLang(title, lang)
|
s = slug.MakeLang(title, lang)
|
||||||
|
} else {
|
||||||
|
s = slug.Make(title)
|
||||||
}
|
}
|
||||||
return slug.Make(title)
|
|
||||||
|
// Transliteration may cause the slug to expand past the limit, so truncate again
|
||||||
|
s, _ = parse.TruncToWord(s, 80)
|
||||||
|
return strings.TrimFunc(s, func(r rune) bool {
|
||||||
|
// TruncToWord doesn't respect words in a slug, since spaces are replaced
|
||||||
|
// with hyphens. So remove any trailing hyphens.
|
||||||
|
return r == '-'
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// isFontValid returns whether or not the submitted post's appearance is valid.
|
// isFontValid returns whether or not the submitted post's appearance is valid.
|
||||||
|
|
Loading…
Reference in New Issue