fix: apply docs sweep updates

This commit is contained in:
Peter Steinberger
2026-05-22 18:39:08 +01:00
parent 769fd0b14a
commit 59aef2ff0d
12 changed files with 127 additions and 20 deletions

View File

@@ -325,17 +325,24 @@ func (ri *routeIndex) localizeURL(raw string) string {
func hasURLScheme(raw string) bool {
switch {
case strings.HasPrefix(raw, "http://"), strings.HasPrefix(raw, "https://"):
case hasSchemePrefix(raw, "http://"), hasSchemePrefix(raw, "https://"):
return true
case strings.HasPrefix(raw, "mailto:"), strings.HasPrefix(raw, "tel:"):
case hasSchemePrefix(raw, "mailto:"), hasSchemePrefix(raw, "tel:"):
return true
case strings.HasPrefix(raw, "data:"), strings.HasPrefix(raw, "javascript:"):
case hasSchemePrefix(raw, "data:"), hasSchemePrefix(raw, "javascript:"), hasSchemePrefix(raw, "vbscript:"):
return true
default:
return false
}
}
func hasSchemePrefix(raw, prefix string) bool {
if len(raw) < len(prefix) {
return false
}
return strings.EqualFold(raw[:len(prefix)], prefix)
}
func splitURLSuffix(raw string) (string, string) {
index := strings.IndexAny(raw, "?#")
if index == -1 {

View File

@@ -49,6 +49,16 @@ func TestLocalizeBodyLinks(t *testing.T) {
input: `See [Config](/zh-CN/gateway/configuration).`,
want: `See [Config](/zh-CN/gateway/configuration).`,
},
{
name: "vbscript scheme stays unchanged",
input: `<a href="vbscript:msgbox(1)">bad</a>`,
want: `<a href="vbscript:msgbox(1)">bad</a>`,
},
{
name: "mixed-case javascript scheme stays unchanged",
input: `<a href="Javascript:alert(1)">bad</a>`,
want: `<a href="Javascript:alert(1)">bad</a>`,
},
{
name: "missing localized page stays unchanged",
input: `See [FAQ](/help/faq).`,