diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2016-10-24 13:45:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-24 13:45:30 +0200 |
commit | a10b2cd372798c4e4b862f0ec03010d2aea2ff1e (patch) | |
tree | f768c420aac0008e4d118709e13fda278a7588c5 /helpers/url.go | |
parent | dffd7da07c3fb198acfa6c4664b53132c4cabe55 (diff) |
Avoid reading from Viper for path and URL funcs
The gain, given the "real sites benchmark" below, is obvious:
```
benchmark old ns/op new ns/op delta
BenchmarkHugo-4 14497594101 13084156335 -9.75%
benchmark old allocs new allocs delta
BenchmarkHugo-4 57404335 48282002 -15.89%
benchmark old bytes new bytes delta
BenchmarkHugo-4 9933505624 9721984424 -2.13%
```
Fixes #2495
Diffstat (limited to 'helpers/url.go')
-rw-r--r-- | helpers/url.go | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/helpers/url.go b/helpers/url.go index 49f670da2..ffb0ba234 100644 --- a/helpers/url.go +++ b/helpers/url.go @@ -101,8 +101,8 @@ func SanitizeURLKeepTrailingSlash(in string) string { // Example: // uri: Vim (text editor) // urlize: vim-text-editor -func URLize(uri string) string { - sanitized := MakePathSanitized(uri) +func (p *PathSpec) URLize(uri string) string { + sanitized := p.MakePathSanitized(uri) // escape unicode letters parsedURI, err := url.Parse(sanitized) @@ -147,7 +147,7 @@ func MakePermalink(host, plink string) *url.URL { } // AbsURL creates a absolute URL from the relative path given and the BaseURL set in config. -func AbsURL(in string, addLanguage bool) string { +func (p *PathSpec) AbsURL(in string, addLanguage bool) string { url, err := url.Parse(in) if err != nil { return in @@ -168,7 +168,7 @@ func AbsURL(in string, addLanguage bool) string { } if addLanguage { - prefix := getLanguagePrefix() + prefix := p.getLanguagePrefix() if prefix != "" { hasPrefix := false // avoid adding language prefix if already present @@ -191,15 +191,15 @@ func AbsURL(in string, addLanguage bool) string { return MakePermalink(baseURL, in).String() } -func getLanguagePrefix() string { - if !viper.GetBool("Multilingual") { +func (p *PathSpec) getLanguagePrefix() string { + if !p.multilingual { return "" } - defaultLang := viper.GetString("DefaultContentLanguage") - defaultInSubDir := viper.GetBool("DefaultContentLanguageInSubdir") + defaultLang := p.defaultContentLanguage + defaultInSubDir := p.defaultContentLanguageInSubdir - currentLang := viper.Get("CurrentContentLanguage").(*Language).Lang + currentLang := p.currentContentLanguage.Lang if currentLang == "" || (currentLang == defaultLang && !defaultInSubDir) { return "" } @@ -218,9 +218,9 @@ func IsAbsURL(path string) bool { // RelURL creates a URL relative to the BaseURL root. // Note: The result URL will not include the context root if canonifyURLs is enabled. -func RelURL(in string, addLanguage bool) string { +func (p *PathSpec) RelURL(in string, addLanguage bool) string { baseURL := viper.GetString("BaseURL") - canonifyURLs := viper.GetBool("canonifyURLs") + canonifyURLs := p.canonifyURLs if (!strings.HasPrefix(in, baseURL) && strings.HasPrefix(in, "http")) || strings.HasPrefix(in, "//") { return in } @@ -232,7 +232,7 @@ func RelURL(in string, addLanguage bool) string { } if addLanguage { - prefix := getLanguagePrefix() + prefix := p.getLanguagePrefix() if prefix != "" { hasPrefix := false // avoid adding language prefix if already present @@ -288,8 +288,8 @@ func AddContextRoot(baseURL, relativePath string) string { return newPath } -func URLizeAndPrep(in string) string { - return URLPrep(viper.GetBool("UglyURLs"), URLize(in)) +func (p *PathSpec) URLizeAndPrep(in string) string { + return URLPrep(p.uglyURLs, p.URLize(in)) } func URLPrep(ugly bool, in string) string { |