Writing relative links to absolute so they work in feeds
authorspf13 <steve.francia@gmail.com>
Wed, 10 Jul 2013 04:14:02 +0000 (00:14 -0400)
committerspf13 <steve.francia@gmail.com>
Wed, 10 Jul 2013 04:14:02 +0000 (00:14 -0400)
hugolib/site.go
main.go

index 2d4fd06490177b041861285cb46d1758fded1ad2..ef2ae00d33adcdb51633c6bb99eb1c0c5a42014e 100644 (file)
@@ -83,6 +83,8 @@ func (site *Site) Render() {
        site.timer.Step("render and write lists")
        site.ProcessShortcodes()
        site.timer.Step("render shortcodes")
+       site.AbsUrlify()
+       site.timer.Step("absolute URLify")
        site.RenderPages()
        site.timer.Step("render pages")
        site.RenderHomePage()
@@ -182,6 +184,17 @@ func (s *Site) ProcessShortcodes() {
        }
 }
 
+func (s *Site) AbsUrlify() {
+       for i, _ := range s.Pages {
+               content := string(s.Pages[i].Content)
+               content = strings.Replace(content, " src=\"/", " src=\""+s.c.BaseUrl+"/", -1)
+               content = strings.Replace(content, " src='/", " src='"+s.c.BaseUrl+"/", -1)
+               content = strings.Replace(content, " href='/", " href='"+s.c.BaseUrl+"/", -1)
+               content = strings.Replace(content, " href=\"/", " href=\""+s.c.BaseUrl+"/", -1)
+               s.Pages[i].Content = template.HTML(content)
+       }
+}
+
 func (s *Site) CreatePages() {
        for _, fileName := range s.Files {
                page := NewPage(fileName)
diff --git a/main.go b/main.go
index 857b8874507bd157a7467ead758ba882eb7e35fb..9bb5ccd808921aed6a385ab106acf002fa1fb7f8 100644 (file)
--- a/main.go
+++ b/main.go
@@ -64,7 +64,9 @@ func main() {
 
        if *baseUrl != "" {
                config.BaseUrl = *baseUrl
-       }
+       } else if *server {
+        config.BaseUrl = "http://localhost:" + *port
+    }
 
        if *version {
                fmt.Println("Hugo Static Site Generator v0.8")