Remove URL param from exported AbsURL methods

This is to make it clear that there is only one URL in play,
the BaseURL.
This commit is contained in:
bep 2015-03-18 19:42:46 +01:00
parent e7099cfa26
commit 658cfb287e
3 changed files with 29 additions and 15 deletions

View file

@ -1363,7 +1363,7 @@ func (s *Site) renderAndWriteXML(name string, dest string, d interface{}, layout
err := s.render(name, d, renderBuffer, layouts...) err := s.render(name, d, renderBuffer, layouts...)
absURLInXML, err := transform.AbsURLInXML(viper.GetString("BaseURL")) absURLInXML, err := transform.AbsURLInXML()
if err != nil { if err != nil {
return err return err
} }
@ -1393,7 +1393,7 @@ func (s *Site) renderAndWritePage(name string, dest string, d interface{}, layou
transformLinks := transform.NewEmptyTransforms() transformLinks := transform.NewEmptyTransforms()
if viper.GetBool("CanonifyURLs") { if viper.GetBool("CanonifyURLs") {
absURL, err := transform.AbsURL(viper.GetString("BaseURL")) absURL, err := transform.AbsURL()
if err != nil { if err != nil {
return err return err
} }

View file

@ -1,33 +1,47 @@
package transform package transform
import ( import (
"github.com/spf13/viper"
"sync" "sync"
) )
var absURLInit sync.Once var absURLInit sync.Once
var ar *absURLReplacer var ar *absURLReplacer
// for performance reasons, we reuse the first baseURL given func AbsURL() (trs []link, err error) {
func initAbsURLReplacer(baseURL string) { initAbsURLReplacer()
absURLInit.Do(func() { return absURLFromReplacer(ar)
ar = newAbsURLReplacer(baseURL)
})
} }
func AbsURL(absURL string) (trs []link, err error) { func absURLFromURL(URL string) (trs []link, err error) {
initAbsURLReplacer(absURL) return absURLFromReplacer(newAbsURLReplacer(URL))
}
func absURLFromReplacer(ar *absURLReplacer) (trs []link, err error) {
trs = append(trs, func(rw contentRewriter) { trs = append(trs, func(rw contentRewriter) {
ar.replaceInHTML(rw) ar.replaceInHTML(rw)
}) })
return return
} }
func AbsURLInXML(absURL string) (trs []link, err error) { func AbsURLInXML() (trs []link, err error) {
initAbsURLReplacer(absURL) initAbsURLReplacer()
return absURLInXMLFromReplacer(ar)
}
func absURLInXMLFromURL(URL string) (trs []link, err error) {
return absURLInXMLFromReplacer(newAbsURLReplacer(URL))
}
func absURLInXMLFromReplacer(ar *absURLReplacer) (trs []link, err error) {
trs = append(trs, func(rw contentRewriter) { trs = append(trs, func(rw contentRewriter) {
ar.replaceInXML(rw) ar.replaceInXML(rw)
}) })
return return
} }
func initAbsURLReplacer() {
absURLInit.Do(func() {
ar = newAbsURLReplacer(viper.GetString("BaseURL"))
})
}

View file

@ -85,7 +85,7 @@ func TestChaingMultipleTransformers(t *testing.T) {
} }
func BenchmarkAbsURL(b *testing.B) { func BenchmarkAbsURL(b *testing.B) {
absURL, _ := AbsURL("http://base") absURL, _ := absURLFromURL("http://base")
tr := NewChain(absURL...) tr := NewChain(absURL...)
b.ResetTimer() b.ResetTimer()
@ -95,7 +95,7 @@ func BenchmarkAbsURL(b *testing.B) {
} }
func TestAbsURL(t *testing.T) { func TestAbsURL(t *testing.T) {
absURL, _ := AbsURL("http://base") absURL, _ := absURLFromURL("http://base")
tr := NewChain(absURL...) tr := NewChain(absURL...)
apply(t.Errorf, tr, abs_url_tests) apply(t.Errorf, tr, abs_url_tests)
@ -103,7 +103,7 @@ func TestAbsURL(t *testing.T) {
} }
func BenchmarkXMLAbsURL(b *testing.B) { func BenchmarkXMLAbsURL(b *testing.B) {
absURLInXML, _ := AbsURLInXML("http://base") absURLInXML, _ := absURLInXMLFromURL("http://base")
tr := NewChain(absURLInXML...) tr := NewChain(absURLInXML...)
b.ResetTimer() b.ResetTimer()
@ -113,7 +113,7 @@ func BenchmarkXMLAbsURL(b *testing.B) {
} }
func TestXMLAbsURL(t *testing.T) { func TestXMLAbsURL(t *testing.T) {
absURLInXML, _ := AbsURLInXML("http://base") absURLInXML, _ := absURLInXMLFromURL("http://base")
tr := NewChain(absURLInXML...) tr := NewChain(absURLInXML...)
apply(t.Errorf, tr, xml_abs_url_tests) apply(t.Errorf, tr, xml_abs_url_tests)
} }