package converter
import (
"bytes"
"github.com/yuin/goldmark"
"github.com/yuin/goldmark/extension"
"github.com/yuin/goldmark/renderer"
"github.com/yuin/goldmark/util"
"sourcecraft.dev/bigbes/markdown-to-confluence-xml/confluence"
)
// MarkdownToConfluence converts Markdown source to Confluence storage format XML.
func MarkdownToConfluence(source []byte) (string, error) {
md := goldmark.New(
goldmark.WithExtensions(
extension.GFM,
extension.TaskList,
),
goldmark.WithRenderer(
renderer.NewRenderer(
renderer.WithNodeRenderers(
util.Prioritized(confluence.NewRenderer(), 100),
),
),
),
)
var buf bytes.Buffer
if err := md.Convert(source, &buf); err != nil {
return "", err
}
return buf.String(), nil
}