From bbd7dfecce3467cd2e048e3bfac0af52cb3da350 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Mon, 2 Dec 2019 15:22:30 +0100 Subject: [PATCH] Initialize paragraph buffer in ParagraphElement --- gold.go | 9 +++------ paragraph.go | 4 ++++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/gold.go b/gold.go index 3597919..7329e03 100644 --- a/gold.go +++ b/gold.go @@ -98,9 +98,7 @@ func (tr *TermRenderer) RenderNode(w io.Writer, node *bf.Node, entering bool) bf _, _ = tr.document.Write([]byte(e.Entering)) } - if node.Type == bf.Paragraph { - tr.paragraph = &bytes.Buffer{} - } + // each paragraph gets rendered into a separate buffer if tr.paragraph != nil { writeTo = tr.paragraph } @@ -113,6 +111,8 @@ func (tr *TermRenderer) RenderNode(w io.Writer, node *bf.Node, entering bool) bf } } } else { + // if we're finished rendering the entire document, + // flush to the real writer if node.Type == bf.Document { writeTo = w } @@ -125,9 +125,6 @@ func (tr *TermRenderer) RenderNode(w io.Writer, node *bf.Node, entering bool) bf } } - if node.Type == bf.Paragraph { - tr.paragraph = nil - } if e.Exiting != "" { _, _ = tr.document.Write([]byte(e.Exiting)) } diff --git a/paragraph.go b/paragraph.go index a45e153..ca5f583 100644 --- a/paragraph.go +++ b/paragraph.go @@ -1,6 +1,7 @@ package gold import ( + "bytes" "io" "github.com/muesli/reflow" @@ -11,6 +12,8 @@ type ParagraphElement struct { } func (e *ParagraphElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error { + tr.paragraph = &bytes.Buffer{} + pre := "\n" if node.Prev == nil || (node.Parent != nil && node.Parent.Type == bf.Item) { pre = "" @@ -48,5 +51,6 @@ func (e *ParagraphElement) Finish(w io.Writer, node *bf.Node, tr *TermRenderer) _, err := iw.Write(reflow.ReflowBytes(tr.paragraph.Bytes(), tr.WordWrap-int(indent))) tr.paragraph.Reset() + tr.paragraph = nil return err }