diff options
author | ivan-meridianbanc-com <[email protected]> | 2020-12-02 13:47:01 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2020-12-02 12:47:01 +0100 |
commit | aebfe156fb2f27057e61b2e50c7576e6b06dab58 (patch) | |
tree | b4f3cfaa0b55dbd1ef8dd7ca0f09e9993a1a2285 /helpers | |
parent | 907d9e92682ed56a57a2206ae9bd9a985b3e1870 (diff) | |
download | hugo-aebfe156fb2f27057e61b2e50c7576e6b06dab58.tar.gz hugo-aebfe156fb2f27057e61b2e50c7576e6b06dab58.zip |
Fix RelURL and AbsURL when path starts with language
Diffstat (limited to 'helpers')
-rw-r--r-- | helpers/url.go | 16 | ||||
-rw-r--r-- | helpers/url_test.go | 31 |
2 files changed, 43 insertions, 4 deletions
diff --git a/helpers/url.go b/helpers/url.go index 6dbdea299..1e88def9e 100644 --- a/helpers/url.go +++ b/helpers/url.go @@ -181,10 +181,14 @@ func (p *PathSpec) AbsURL(in string, addLanguage bool) string { if prefix != "" { hasPrefix := false // avoid adding language prefix if already present + in2 := in if strings.HasPrefix(in, "/") { - hasPrefix = strings.HasPrefix(in[1:], prefix) + in2 = in[1:] + } + if in2 == prefix { + hasPrefix = true } else { - hasPrefix = strings.HasPrefix(in, prefix) + hasPrefix = strings.HasPrefix(in2, prefix+"/") } if !hasPrefix { @@ -230,10 +234,14 @@ func (p *PathSpec) RelURL(in string, addLanguage bool) string { if prefix != "" { hasPrefix := false // avoid adding language prefix if already present + in2 := in if strings.HasPrefix(in, "/") { - hasPrefix = strings.HasPrefix(in[1:], prefix) + in2 = in[1:] + } + if in2 == prefix { + hasPrefix = true } else { - hasPrefix = strings.HasPrefix(in, prefix) + hasPrefix = strings.HasPrefix(in2, prefix+"/") } if !hasPrefix { diff --git a/helpers/url_test.go b/helpers/url_test.go index 9223ba2cd..6f374f027 100644 --- a/helpers/url_test.go +++ b/helpers/url_test.go @@ -84,6 +84,21 @@ func doTestAbsURL(t *testing.T, defaultInSubDir, addLanguage, multilingual bool, {"http//foo", "http://base/path", "http://base/path/MULTIhttp/foo"}, } + if multilingual && addLanguage && defaultInSubDir { + newTests := []struct { + input string + baseURL string + expected string + }{ + {lang + "test", "http://base/", "http://base/" + lang + "/" + lang + "test"}, + {"/" + lang + "test", "http://base/", "http://base/" + lang + "/" + lang + "test"}, + } + + for _, test := range newTests { + tests = append(tests, test) + } + } + for _, test := range tests { v.Set("baseURL", test.baseURL) v.Set("contentDir", "content") @@ -164,6 +179,22 @@ func doTestRelURL(t *testing.T, defaultInSubDir, addLanguage, multilingual bool, {"//schemaless", "http://base/", false, "//schemaless"}, } + if multilingual && addLanguage && defaultInSubDir { + newTests := []struct { + input string + baseURL string + canonify bool + expected string + }{ + {lang + "test", "http://base/", false, "/" + lang + "/" + lang + "test"}, + {"/" + lang + "test", "http://base/", false, "/" + lang + "/" + lang + "test"}, + } + + for _, test := range newTests { + tests = append(tests, test) + } + } + for i, test := range tests { v.Set("baseURL", test.baseURL) v.Set("canonifyURLs", test.canonify) |