shithub: hugo

Download patch

ref: 30af267b32dcbf07cd382c1541a6cfd18c5e7c89
parent: a31edb3388606eb231261780d91e1324c50b2953
author: spf13 <[email protected]>
date: Mon Aug 25 08:11:19 EDT 2014

Fix #302. Links now have trailing slashes.

--- a/helpers/url.go
+++ b/helpers/url.go
@@ -23,7 +23,7 @@
 )
 
 func SanitizeUrl(in string) string {
-	url, err := purell.NormalizeURLString(in, purell.FlagsUsuallySafeGreedy|purell.FlagRemoveDuplicateSlashes|purell.FlagRemoveUnnecessaryHostDots|purell.FlagRemoveEmptyPortSeparator)
+	url, err := purell.NormalizeURLString(in, purell.FlagsSafe|purell.FlagRemoveTrailingSlash|purell.FlagRemoveDotSegments|purell.FlagRemoveDuplicateSlashes|purell.FlagRemoveUnnecessaryHostDots|purell.FlagRemoveEmptyPortSeparator)
 	if err != nil {
 		return in
 	}
@@ -79,11 +79,16 @@
 }
 
 func UrlPrep(ugly bool, in string) string {
-	in = SanitizeUrl(in)
 	if ugly {
-		return Uglify(in)
+		x := Uglify(SanitizeUrl(in))
+		return x
 	} else {
-		return PrettifyUrl(in)
+		x := PrettifyUrl(SanitizeUrl(in))
+		url, err := purell.NormalizeURLString(x, purell.FlagAddTrailingSlash)
+		if err != nil {
+			return in
+		}
+		return url
 	}
 }
 
--- a/hugolib/page_permalink_test.go
+++ b/hugolib/page_permalink_test.go
@@ -18,11 +18,11 @@
 		expectedAbs string
 		expectedRel string
 	}{
-		{"x/y/z/boofar.md", "x/y/z", "", "", "", false, "/x/y/z/boofar", "/x/y/z/boofar"},
-		{"x/y/z/boofar.md", "x/y/z/", "", "", "", false, "/x/y/z/boofar", "/x/y/z/boofar"},
-		{"x/y/z/boofar.md", "x/y/z/", "", "boofar", "", false, "/x/y/z/boofar", "/x/y/z/boofar"},
-		{"x/y/z/boofar.md", "x/y/z", "http://barnew/", "", "", false, "http://barnew/x/y/z/boofar", "/x/y/z/boofar"},
-		{"x/y/z/boofar.md", "x/y/z/", "http://barnew/", "boofar", "", false, "http://barnew/x/y/z/boofar", "/x/y/z/boofar"},
+		{"x/y/z/boofar.md", "x/y/z", "", "", "", false, "/x/y/z/boofar/", "/x/y/z/boofar/"},
+		{"x/y/z/boofar.md", "x/y/z/", "", "", "", false, "/x/y/z/boofar/", "/x/y/z/boofar/"},
+		{"x/y/z/boofar.md", "x/y/z/", "", "boofar", "", false, "/x/y/z/boofar/", "/x/y/z/boofar/"},
+		{"x/y/z/boofar.md", "x/y/z", "http://barnew/", "", "", false, "http://barnew/x/y/z/boofar/", "/x/y/z/boofar/"},
+		{"x/y/z/boofar.md", "x/y/z/", "http://barnew/", "boofar", "", false, "http://barnew/x/y/z/boofar/", "/x/y/z/boofar/"},
 		{"x/y/z/boofar.md", "x/y/z", "", "", "", true, "/x/y/z/boofar.html", "/x/y/z/boofar.html"},
 		{"x/y/z/boofar.md", "x/y/z/", "", "", "", true, "/x/y/z/boofar.html", "/x/y/z/boofar.html"},
 		{"x/y/z/boofar.md", "x/y/z/", "", "boofar", "", true, "/x/y/z/boofar.html", "/x/y/z/boofar.html"},