summaryrefslogtreecommitdiffstats
path: root/transform/absurl.go
diff options
context:
space:
mode:
authorbep <bjorn.erik.pedersen@gmail.com>2015-05-16 00:11:39 +0200
committerbep <bjorn.erik.pedersen@gmail.com>2015-05-16 00:11:44 +0200
commitbeaa8b1bcabd4be25ac26bea39ab9f7290147e67 (patch)
tree76095c2b6ec9ddf22477c188c87f47e4c6cee8d6 /transform/absurl.go
parente522e5f4154cb6a5d960aeb8920fa3e433641cf6 (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.go57
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)
}