strip trailing baseurl slash. Added a new template function "sanitizeurl" which ensures no double slashes. Fixed #221

This commit is contained in:
spf13 2014-04-07 22:02:08 -04:00
parent a6170154cf
commit ad34be9d77
3 changed files with 32 additions and 19 deletions

View file

@ -16,8 +16,18 @@ package helpers
import (
"net/url"
"path"
"github.com/PuerkitoBio/purell"
)
func SanitizeUrl(in string) string {
url, err := purell.NormalizeURLString(in, purell.FlagsUsuallySafeGreedy|purell.FlagRemoveDuplicateSlashes|purell.FlagRemoveUnnecessaryHostDots|purell.FlagRemoveEmptyPortSeparator)
if err != nil {
return in
}
return url
}
// Similar to MakePath, but with Unicode handling
// Example:
// uri: Vim (text editor)
@ -55,6 +65,7 @@ func MakePermalink(host, plink string) *url.URL {
}
func UrlPrep(ugly bool, in string) string {
in = SanitizeUrl(in)
if ugly {
return Uglify(in)
} else {

View file

@ -227,7 +227,7 @@ func (s *Site) initializeSiteInfo() {
}
s.Info = SiteInfo{
BaseUrl: template.URL(viper.GetString("BaseUrl")),
BaseUrl: template.URL(helpers.SanitizeUrl(viper.GetString("BaseUrl"))),
Title: viper.GetString("Title"),
Recent: &s.Pages,
Params: params,

View file

@ -2,8 +2,6 @@ package bundle
import (
"errors"
"github.com/eknkc/amber"
"github.com/spf13/hugo/helpers"
"html"
"html/template"
"io"
@ -13,6 +11,9 @@ import (
"reflect"
"strconv"
"strings"
"github.com/eknkc/amber"
"github.com/spf13/hugo/helpers"
)
func Gt(a interface{}, b interface{}) bool {
@ -159,22 +160,23 @@ func NewTemplate() Template {
}
funcMap := template.FuncMap{
"urlize": helpers.Urlize,
"gt": Gt,
"isset": IsSet,
"echoParam": ReturnWhenSet,
"safeHtml": SafeHtml,
"first": First,
"highlight": Highlight,
"add": func(a, b int) int { return a + b },
"sub": func(a, b int) int { return a - b },
"div": func(a, b int) int { return a / b },
"mod": func(a, b int) int { return a % b },
"mul": func(a, b int) int { return a * b },
"modBool": func(a, b int) bool { return a%b == 0 },
"lower": func(a string) string { return strings.ToLower(a) },
"upper": func(a string) string { return strings.ToUpper(a) },
"title": func(a string) string { return strings.Title(a) },
"urlize": helpers.Urlize,
"sanitizeurl": helpers.SanitizeUrl,
"gt": Gt,
"isset": IsSet,
"echoParam": ReturnWhenSet,
"safeHtml": SafeHtml,
"first": First,
"highlight": Highlight,
"add": func(a, b int) int { return a + b },
"sub": func(a, b int) int { return a - b },
"div": func(a, b int) int { return a / b },
"mod": func(a, b int) int { return a % b },
"mul": func(a, b int) int { return a * b },
"modBool": func(a, b int) bool { return a%b == 0 },
"lower": func(a string) string { return strings.ToLower(a) },
"upper": func(a string) string { return strings.ToUpper(a) },
"title": func(a string) string { return strings.Title(a) },
}
templates.Funcs(funcMap)