all repos — homestead @ 65039b065ba634b9c4b4c7f4b42ebccdbfd40ce0

Code for my website

remove buffers in file writer

Alan Pearce
commit

65039b065ba634b9c4b4c7f4b42ebccdbfd40ce0

parent

f7d8beffaa09ecf863996d29c72f508eb3952c84

1 file changed, 13 insertions(+), 9 deletions(-)

changed files
M domain/web/templates/layout.godomain/web/templates/layout.go
@@ -50,7 +50,7 @@ return g.Attr(k, v) // can't inline this because it uses ...value, grr
}) } -func Layout(site SiteSettings, page PageSettings, children ...g.Node) g.Node { +func Layout(site SiteSettings, page PageSettings, children ...g.Node) g.NodeWriter { return DoctypeHTML(FormattedDocument( HTML( Lang(site.Language),
@@ -115,8 +115,8 @@ g.Text(item.Name),
) } -func FormattedDocument(doc g.Node) g.Node { - return g.NodeFunc(func(w io.Writer) error { +func FormattedDocument(doc g.Node) g.NodeWriter { + return g.NodeWriterFunc(func(w io.Writer) (int64, error) { pr, pw := io.Pipe() defer pr.Close()
@@ -125,19 +125,23 @@ pw.CloseWithError(doc.Render(pw))
}() if err := htmlformat.Document(w, pr); err != nil { - return fault.Wrap(err) + return 0, fault.Wrap(err) } - return nil + return 0, nil }) } -func DoctypeHTML(sibling g.Node) g.Node { - return g.NodeFunc(func(w io.Writer) error { +func DoctypeHTML(sibling g.Node) g.NodeWriter { + return g.NodeWriterFunc(func(w io.Writer) (int64, error) { if _, err := w.Write([]byte("<!doctype html>\n")); err != nil { - return err + return 0, err } - return sibling.Render(w) + if sibling, ok := sibling.(g.NodeWriter); ok { + return sibling.WriteTo(w) + } + + return 0, sibling.Render(w) }) }