Add godoc comments to public types

This commit is contained in:
Christian Muehlhaeuser
2019-12-10 17:18:59 +01:00
parent 58f00893c7
commit fd9a0d6f25
+17 -2
View File
@@ -25,10 +25,14 @@ type TermRenderer struct {
context RenderContext context RenderContext
} }
// Render initializes a new TermRenderer and renders a markdown with a specific
// style.
func Render(in string, stylePath string) ([]byte, error) { func Render(in string, stylePath string) ([]byte, error) {
return RenderBytes([]byte(in), stylePath) return RenderBytes([]byte(in), stylePath)
} }
// RenderBytes initializes a new TermRenderer and renders a markdown with a
// specific style.
func RenderBytes(in []byte, stylePath string) ([]byte, error) { func RenderBytes(in []byte, stylePath string) ([]byte, error) {
r, err := NewTermRenderer(stylePath, Options{ r, err := NewTermRenderer(stylePath, Options{
WordWrap: 80, WordWrap: 80,
@@ -62,6 +66,8 @@ func NewTermRenderer(stylePath string, options Options) (*TermRenderer, error) {
return NewTermRendererFromBytes(b, options) return NewTermRendererFromBytes(b, options)
} }
// NewTermRendererFromBytes returns a new TermRenderer with style and options
// set.
func NewTermRendererFromBytes(b []byte, options Options) (*TermRenderer, error) { func NewTermRendererFromBytes(b []byte, options Options) (*TermRenderer, error) {
e := make(map[string]ElementStyle) e := make(map[string]ElementStyle)
err := json.Unmarshal(b, &e) err := json.Unmarshal(b, &e)
@@ -82,30 +88,35 @@ func NewTermRendererFromBytes(b []byte, options Options) (*TermRenderer, error)
return tr, nil return tr, nil
} }
// Render returns the markdown rendered into a string.
func (tr *TermRenderer) Render(in string) string { func (tr *TermRenderer) Render(in string) string {
return string(tr.RenderBytes([]byte(in))) return string(tr.RenderBytes([]byte(in)))
} }
// RenderBytes returns the markdown rendered into a byte slice.
func (tr *TermRenderer) RenderBytes(in []byte) []byte { func (tr *TermRenderer) RenderBytes(in []byte) []byte {
return bf.Run(in, bf.WithRenderer(tr)) return bf.Run(in, bf.WithRenderer(tr))
} }
// RenderNode renders a single markdown node.
func (tr *TermRenderer) RenderNode(w io.Writer, node *bf.Node, entering bool) bf.WalkStatus { func (tr *TermRenderer) RenderNode(w io.Writer, node *bf.Node, entering bool) bf.WalkStatus {
// _, _ = w.Write([]byte(node.Type.String())) // _, _ = w.Write([]byte(node.Type.String()))
writeTo := w writeTo := w
bs := tr.context.blockStack bs := tr.context.blockStack
// children get rendered by their parent
if isChild(node) { if isChild(node) {
return bf.GoToNext return bf.GoToNext
} }
e := tr.NewElement(node) e := tr.NewElement(node)
if entering { if entering {
// everything below the Document element gets rendered into a block buffer
if bs.Len() > 0 { if bs.Len() > 0 {
writeTo = io.Writer(bs.Current().Block) writeTo = io.Writer(bs.Current().Block)
} }
_, _ = writeTo.Write([]byte(e.Entering))
_, _ = writeTo.Write([]byte(e.Entering))
if e.Renderer != nil { if e.Renderer != nil {
err := e.Renderer.Render(writeTo, tr.context) err := e.Renderer.Render(writeTo, tr.context)
if err != nil { if err != nil {
@@ -114,6 +125,7 @@ func (tr *TermRenderer) RenderNode(w io.Writer, node *bf.Node, entering bool) bf
} }
} }
} else { } else {
// everything below the Document element gets rendered into a block buffer
if bs.Len() > 0 { if bs.Len() > 0 {
writeTo = io.Writer(bs.Parent().Block) writeTo = io.Writer(bs.Parent().Block)
} }
@@ -131,16 +143,17 @@ func (tr *TermRenderer) RenderNode(w io.Writer, node *bf.Node, entering bool) bf
return bf.Terminate return bf.Terminate
} }
} }
_, _ = writeTo.Write([]byte(e.Exiting)) _, _ = writeTo.Write([]byte(e.Exiting))
} }
return bf.GoToNext return bf.GoToNext
} }
// RenderHeader renders the markdown's header.
func (tr *TermRenderer) RenderHeader(w io.Writer, ast *bf.Node) { func (tr *TermRenderer) RenderHeader(w io.Writer, ast *bf.Node) {
} }
// RenderFooter renders the markdown's footer.
func (tr *TermRenderer) RenderFooter(w io.Writer, ast *bf.Node) { func (tr *TermRenderer) RenderFooter(w io.Writer, ast *bf.Node) {
} }
@@ -148,6 +161,8 @@ func isChild(node *bf.Node) bool {
if node.Parent == nil { if node.Parent == nil {
return false return false
} }
// These types are already rendered by their parent
switch node.Parent.Type { switch node.Parent.Type {
case bf.Heading, bf.Link, bf.Image, bf.TableCell, bf.Emph, bf.Strong: case bf.Heading, bf.Link, bf.Image, bf.TableCell, bf.Emph, bf.Strong:
return true return true