From 9b49abe410e42402ebb9a18131af85b8098b1ab8 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 15 Dec 2019 04:53:17 +0100 Subject: [PATCH] Make TermRenderer io.Reader & io.WriteCloser compatible --- gold.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/gold.go b/gold.go index 3787ad2..87b2337 100644 --- a/gold.go +++ b/gold.go @@ -19,7 +19,9 @@ import ( ) type TermRenderer struct { - md goldmark.Markdown + md goldmark.Markdown + buf bytes.Buffer + renderBuf bytes.Buffer } // Render initializes a new TermRenderer and renders a markdown with a specific @@ -81,6 +83,24 @@ func NewTermRendererFromBytes(b []byte, options ansi.Options) (*TermRenderer, er }, nil } +func (tr *TermRenderer) Read(b []byte) (int, error) { + return tr.renderBuf.Read(b) +} + +func (tr *TermRenderer) Write(b []byte) (int, error) { + return tr.buf.Write(b) +} + +func (tr *TermRenderer) Close() error { + err := tr.md.Convert(tr.buf.Bytes(), &tr.renderBuf) + if err != nil { + return err + } + + tr.buf.Reset() + return nil +} + // Render returns the markdown rendered into a string. func (tr *TermRenderer) Render(in string) (string, error) { b, err := tr.RenderBytes([]byte(in))