1
0
Fork 0
forked from forgejo/forgejo

Make user-content-* consistent with github (#26388)

Fix #26367
Related #19745

Thanks @lazyky for providing  test cases
This commit is contained in:
CaiCandong 2023-08-09 17:30:31 +08:00 committed by GitHub
parent 220f236ff5
commit d41aee1d1e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 9 deletions

View file

@ -29,17 +29,12 @@ func CleanValue(value []byte) []byte {
value = bytes.TrimSpace(value)
rs := bytes.Runes(value)
result := make([]rune, 0, len(rs))
needsDash := false
for _, r := range rs {
switch {
case unicode.IsLetter(r) || unicode.IsNumber(r) || r == '_':
if needsDash && len(result) > 0 {
result = append(result, '-')
}
needsDash = false
if unicode.IsLetter(r) || unicode.IsNumber(r) || r == '_' || r == '-' {
result = append(result, unicode.ToLower(r))
default:
needsDash = true
}
if unicode.IsSpace(r) {
result = append(result, '-')
}
}
return []byte(string(result))