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))