shithub: hugo

Download patch

ref: 2176d2c197aeb265b7c51aae1d007eaf11690520
parent: ff8b52758d9fe857455a20303bf23e92888413f0
author: Noah Campbell <[email protected]>
date: Tue Oct 1 11:19:16 EDT 2013

Reducing scope of RenderThing*

--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -376,7 +376,7 @@
 			layout = p.Layout()
 		}
 
-		content, err := s.RenderThingOrDefault(p, layout, "_default/single.html")
+		content, err := s.renderThingOrDefault(p, layout, "_default/single.html")
 		if err != nil {
 			return err
 		}
@@ -402,7 +402,7 @@
 			n.Data[singular] = o
 			n.Data["Pages"] = o
 			layout := "indexes/" + singular + ".html"
-			x, err := s.RenderThing(n, layout)
+			x, err := s.renderThing(n, layout)
 			if err != nil {
 				return err
 			}
@@ -444,7 +444,7 @@
 			n.Data["Index"] = s.Indexes[plural]
 			n.Data["OrderedIndex"] = s.Info.Indexes[plural]
 
-			x, err := s.RenderThing(n, layout)
+			x, err := s.renderThing(n, layout)
 			if err != nil {
 				return err
 			}
@@ -469,7 +469,7 @@
 		n.Data["Pages"] = data
 		layout := "indexes/" + section + ".html"
 
-		content, err := s.RenderThingOrDefault(n, layout, "_default/index.html")
+		content, err := s.renderThingOrDefault(n, layout, "_default/index.html")
 		if err != nil {
 			return err
 		}
@@ -508,7 +508,7 @@
 			n.Data["Pages"] = s.Pages[:9]
 		}
 	}
-	x, err := s.RenderThing(n, "index.html")
+	x, err := s.renderThing(n, "index.html")
 	if err != nil {
 		return err
 	}
@@ -534,7 +534,7 @@
 		n.Url = helpers.Urlize("404.html")
 		n.Title = "404 Page not found"
 		n.Permalink = permalink(s, "404.html")
-		x, err := s.RenderThing(n, "404.html")
+		x, err := s.renderThing(n, "404.html")
 		if err != nil {
 			return err
 		}
@@ -575,7 +575,7 @@
 	}
 }
 
-func (s *Site) RenderThing(d interface{}, layout string) (*bytes.Buffer, error) {
+func (s *Site) renderThing(d interface{}, layout string) (*bytes.Buffer, error) {
 	if s.Tmpl.Lookup(layout) == nil {
 		return nil, fmt.Errorf("Layout not found: %s", layout)
 	}
@@ -584,11 +584,11 @@
 	return buffer, err
 }
 
-func (s *Site) RenderThingOrDefault(d interface{}, layout string, defaultLayout string) (*bytes.Buffer, error) {
-	content, err := s.RenderThing(d, layout)
+func (s *Site) renderThingOrDefault(d interface{}, layout string, defaultLayout string) (*bytes.Buffer, error) {
+	content, err := s.renderThing(d, layout)
 	if err != nil {
 		var err2 error
-		content, err2 = s.RenderThing(d, defaultLayout)
+		content, err2 = s.renderThing(d, defaultLayout)
 		if err2 == nil {
 			return content, err2
 		}
@@ -623,9 +623,12 @@
 			&transform.NavActive{Section: "tbd"},
 		)
 	}
-	final := new(bytes.Buffer)
-	s.Transformer.Apply(final, content)
-	return s.Target.Publish(path, final)
+	reader, writer := io.Pipe()
+	go func() {
+		s.Transformer.Apply(writer, content)
+		writer.Close()
+	}()
+	return s.Target.Publish(path, reader)
 }
 
 func (s *Site) WriteAlias(path string, permalink template.HTML) (err error) {
--- a/hugolib/site_test.go
+++ b/hugolib/site_test.go
@@ -46,11 +46,11 @@
 	return p
 }
 
-func TestDegenerateRenderThingMissingTemplate(t *testing.T) {
+func TestDegeneraterenderThingMissingTemplate(t *testing.T) {
 	p, _ := ReadFrom(strings.NewReader(PAGE_SIMPLE_TITLE), "content/a/file.md")
 	s := new(Site)
 	s.prepTemplates()
-	_, err := s.RenderThing(p, "foobar")
+	_, err := s.renderThing(p, "foobar")
 	if err == nil {
 		t.Errorf("Expected err to be returned when missing the template.")
 	}
@@ -66,7 +66,7 @@
 }
 
 func matchRender(t *testing.T, s *Site, p *Page, tmplName string, expected string) {
-	content, err := s.RenderThing(p, tmplName)
+	content, err := s.renderThing(p, tmplName)
 	if err != nil {
 		t.Fatalf("Unable to render template.")
 	}
@@ -76,7 +76,7 @@
 	}
 }
 
-func TestRenderThing(t *testing.T) {
+func TestrenderThing(t *testing.T) {
 	tests := []struct {
 		content  string
 		template string
@@ -103,7 +103,7 @@
 		}
 
 		p.Content = template.HTML(p.Content)
-		html, err2 := s.RenderThing(p, templateName)
+		html, err2 := s.renderThing(p, templateName)
 		if err2 != nil {
 			t.Errorf("Unable to render html: %s", err)
 		}
@@ -114,7 +114,7 @@
 	}
 }
 
-func TestRenderThingOrDefault(t *testing.T) {
+func TestrenderThingOrDefault(t *testing.T) {
 	tests := []struct {
 		content  string
 		missing  bool
@@ -144,9 +144,9 @@
 		var html *bytes.Buffer
 		var err2 error
 		if test.missing {
-			html, err2 = s.RenderThingOrDefault(p, "missing", templateName)
+			html, err2 = s.renderThingOrDefault(p, "missing", templateName)
 		} else {
-			html, err2 = s.RenderThingOrDefault(p, templateName, "missing_default")
+			html, err2 = s.renderThingOrDefault(p, templateName, "missing_default")
 		}
 
 		if err2 != nil {