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
}
// Render initializes a new TermRenderer and renders a markdown with a specific
// style.
func Render(in string, stylePath string) ([]byte, error) {
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) {
r, err := NewTermRenderer(stylePath, Options{
WordWrap: 80,
@@ -62,6 +66,8 @@ func NewTermRenderer(stylePath string, options Options) (*TermRenderer, error) {
return NewTermRendererFromBytes(b, options)
}
// NewTermRendererFromBytes returns a new TermRenderer with style and options
// set.
func NewTermRendererFromBytes(b []byte, options Options) (*TermRenderer, error) {
e := make(map[string]ElementStyle)
err := json.Unmarshal(b, &e)
@@ -82,30 +88,35 @@ func NewTermRendererFromBytes(b []byte, options Options) (*TermRenderer, error)
return tr, nil
}
// Render returns the markdown rendered into a string.
func (tr *TermRenderer) Render(in string) string {
return string(tr.RenderBytes([]byte(in)))
}
// RenderBytes returns the markdown rendered into a byte slice.
func (tr *TermRenderer) RenderBytes(in []byte) []byte {
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 {
// _, _ = w.Write([]byte(node.Type.String()))
writeTo := w
bs := tr.context.blockStack
// children get rendered by their parent
if isChild(node) {
return bf.GoToNext
}
e := tr.NewElement(node)
if entering {
// everything below the Document element gets rendered into a block buffer
if bs.Len() > 0 {
writeTo = io.Writer(bs.Current().Block)
}
_, _ = writeTo.Write([]byte(e.Entering))
_, _ = writeTo.Write([]byte(e.Entering))
if e.Renderer != nil {
err := e.Renderer.Render(writeTo, tr.context)
if err != nil {
@@ -114,6 +125,7 @@ func (tr *TermRenderer) RenderNode(w io.Writer, node *bf.Node, entering bool) bf
}
}
} else {
// everything below the Document element gets rendered into a block buffer
if bs.Len() > 0 {
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
}
}
_, _ = writeTo.Write([]byte(e.Exiting))
}
return bf.GoToNext
}
// RenderHeader renders the markdown's header.
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) {
}
@@ -148,6 +161,8 @@ func isChild(node *bf.Node) bool {
if node.Parent == nil {
return false
}
// These types are already rendered by their parent
switch node.Parent.Type {
case bf.Heading, bf.Link, bf.Image, bf.TableCell, bf.Emph, bf.Strong:
return true