From 74ffb45fbe2c121881b2386fc3210f8b1c6bd952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Tue, 13 Sep 2016 23:44:16 +0200 Subject: [PATCH] helpers: Improve the language prefix logic See #2444 --- helpers/url.go | 52 +++++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/helpers/url.go b/helpers/url.go index 1bc6042e6..49f670da2 100644 --- a/helpers/url.go +++ b/helpers/url.go @@ -169,20 +169,22 @@ func AbsURL(in string, addLanguage bool) string { if addLanguage { prefix := getLanguagePrefix() - hasPrefix := false - // avoid adding language prefix if already present - if strings.HasPrefix(in, "/") { - hasPrefix = strings.HasPrefix(in[1:], prefix) - } else { - hasPrefix = strings.HasPrefix(in, prefix) - } + if prefix != "" { + hasPrefix := false + // avoid adding language prefix if already present + if strings.HasPrefix(in, "/") { + hasPrefix = strings.HasPrefix(in[1:], prefix) + } else { + hasPrefix = strings.HasPrefix(in, prefix) + } - if prefix != "" && !hasPrefix { - addSlash := in == "" || strings.HasSuffix(in, "/") - in = path.Join(prefix, in) + if !hasPrefix { + addSlash := in == "" || strings.HasSuffix(in, "/") + in = path.Join(prefix, in) - if addSlash { - in += "/" + if addSlash { + in += "/" + } } } } @@ -231,21 +233,23 @@ func RelURL(in string, addLanguage bool) string { if addLanguage { prefix := getLanguagePrefix() - hasPrefix := false - // avoid adding language prefix if already present - if strings.HasPrefix(in, "/") { - hasPrefix = strings.HasPrefix(in[1:], prefix) - } else { - hasPrefix = strings.HasPrefix(in, prefix) - } + if prefix != "" { + hasPrefix := false + // avoid adding language prefix if already present + if strings.HasPrefix(in, "/") { + hasPrefix = strings.HasPrefix(in[1:], prefix) + } else { + hasPrefix = strings.HasPrefix(in, prefix) + } - if prefix != "" && !hasPrefix { - hadSlash := strings.HasSuffix(u, "/") + if !hasPrefix { + hadSlash := strings.HasSuffix(u, "/") - u = path.Join(prefix, u) + u = path.Join(prefix, u) - if hadSlash { - u += "/" + if hadSlash { + u += "/" + } } } }