mark/renderer/paragraph.go

45 lines
1.2 KiB
Go
Raw Permalink Normal View History

2024-07-25 22:24:36 +02:00
package renderer
import (
"github.com/yuin/goldmark/ast"
"github.com/yuin/goldmark/renderer"
"github.com/yuin/goldmark/renderer/html"
"github.com/yuin/goldmark/util"
)
type ConfluenceParagraphRenderer struct {
html.Config
}
// NewConfluenceRenderer creates a new instance of the ConfluenceRenderer
func NewConfluenceParagraphRenderer(opts ...html.Option) renderer.NodeRenderer {
return &ConfluenceParagraphRenderer{
Config: html.NewConfig(),
}
}
// RegisterFuncs implements NodeRenderer.RegisterFuncs .
func (r *ConfluenceParagraphRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) {
reg.Register(ast.KindParagraph, r.renderParagraph)
}
func (r *ConfluenceParagraphRenderer) renderParagraph(w util.BufWriter, source []byte, n ast.Node, entering bool) (ast.WalkStatus, error) {
2024-08-12 14:14:25 +02:00
if entering {
if n.FirstChild().Kind() != ast.KindRawHTML {
if n.Attributes() != nil {
_, _ = w.WriteString("<p")
html.RenderAttributes(w, n, html.ParagraphAttributeFilter)
_ = w.WriteByte('>')
} else {
_, _ = w.WriteString("<p>")
}
}
} else {
if n.FirstChild().Kind() != ast.KindRawHTML {
_, _ = w.WriteString("</p>")
}
2024-07-25 22:24:36 +02:00
_, _ = w.WriteString("\n")
}
return ast.WalkContinue, nil
}