diff options
author | bep <bjorn.erik.pedersen@gmail.com> | 2015-05-16 00:11:39 +0200 |
---|---|---|
committer | bep <bjorn.erik.pedersen@gmail.com> | 2015-05-16 00:11:44 +0200 |
commit | beaa8b1bcabd4be25ac26bea39ab9f7290147e67 (patch) | |
tree | 76095c2b6ec9ddf22477c188c87f47e4c6cee8d6 /transform/absurl.go | |
parent | e522e5f4154cb6a5d960aeb8920fa3e433641cf6 (diff) |
Add support for URLs relative to context root
Setting `RelativeURLs` to `true` will make all relative URLs in the site *really* relative.
And will do so with speed.
So:
In `/post/myblogpost.html`:
`/mycss.css` becomes `../mycss.css`
The same in `/index.html` will become:
`./mycss.css` etc.
Note that absolute URLs will not be touched (either external resources, or URLs constructed with `BaseURL`).
The speediness is about the same as before:
```
benchmark old ns/op new ns/op delta
BenchmarkAbsURL 17462 18164 +4.02%
BenchmarkAbsURLSrcset 18842 19632 +4.19%
BenchmarkXMLAbsURLSrcset 18643 19313 +3.59%
BenchmarkXMLAbsURL 9283 9656 +4.02%
benchmark old allocs new allocs delta
BenchmarkAbsURL 24 28 +16.67%
BenchmarkAbsURLSrcset 29 32 +10.34%
BenchmarkXMLAbsURLSrcset 27 30 +11.11%
BenchmarkXMLAbsURL 12 14 +16.67%
benchmark old bytes new bytes delta
BenchmarkAbsURL 3154 3404 +7.93%
BenchmarkAbsURLSrcset 2376 2573 +8.29%
BenchmarkXMLAbsURLSrcset 2569 2763 +7.55%
BenchmarkXMLAbsURL 1888 1998 +5.83%
```
Fixes #1104
Fixes #622
Fixes #937
Fixes #157
Diffstat (limited to 'transform/absurl.go')
-rw-r--r-- | transform/absurl.go | 57 |
1 files changed, 5 insertions, 52 deletions
diff --git a/transform/absurl.go b/transform/absurl.go index 75dbe4db3..7f06056f0 100644 --- a/transform/absurl.go +++ b/transform/absurl.go @@ -1,58 +1,11 @@ package transform -import ( - "github.com/spf13/viper" - "sync" -) +var ar *absURLReplacer = newAbsURLReplacer() -// to be used in tests; the live site will get its value from Viper. -var AbsBaseUrl string - -var absURLInit sync.Once -var ar *absURLReplacer - -func AbsURL() (trs []link, err error) { - initAbsURLReplacer() - return absURLFromReplacer(ar) -} - -func absURLFromURL(URL string) (trs []link, err error) { - return absURLFromReplacer(newAbsURLReplacer(URL)) -} - -func absURLFromReplacer(ar *absURLReplacer) (trs []link, err error) { - trs = append(trs, func(ct contentTransformer) { - ar.replaceInHTML(ct) - }) - return -} - -func AbsURLInXML() (trs []link, err error) { - initAbsURLReplacer() - return absURLInXMLFromReplacer(ar) -} - -func absURLInXMLFromURL(URL string) (trs []link, err error) { - return absURLInXMLFromReplacer(newAbsURLReplacer(URL)) +var AbsURL = func(ct contentTransformer) { + ar.replaceInHTML(ct) } -func absURLInXMLFromReplacer(ar *absURLReplacer) (trs []link, err error) { - trs = append(trs, func(ct contentTransformer) { - ar.replaceInXML(ct) - }) - return -} - -func initAbsURLReplacer() { - absURLInit.Do(func() { - var url string - - if AbsBaseUrl != "" { - url = AbsBaseUrl - } else { - url = viper.GetString("BaseURL") - } - - ar = newAbsURLReplacer(url) - }) +var AbsURLInXML = func(ct contentTransformer) { + ar.replaceInXML(ct) } |