summaryrefslogtreecommitdiffstats
path: root/helpers/url.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-10-24 13:45:30 +0200
committerGitHub <noreply@github.com>2016-10-24 13:45:30 +0200
commita10b2cd372798c4e4b862f0ec03010d2aea2ff1e (patch)
treef768c420aac0008e4d118709e13fda278a7588c5 /helpers/url.go
parentdffd7da07c3fb198acfa6c4664b53132c4cabe55 (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.go28
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 {