feat: habilitar extensiones goldmark completas en mdToHTML

Se configura goldmark con extensiones GFM (tablas, strikethrough,
autolinks, task lists), DefinitionList, Footnote, Typographer y CJK.
Esto reemplaza el parser básico por defecto por uno con soporte completo
de Markdown, mejorando el rendering de mensajes enviados por los bots
en Matrix. Se reutiliza una instancia global del parser para evitar
recrearlo en cada llamada.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-07 14:12:41 +00:00
parent 14f951982d
commit 29decb3321
+13 -2
View File
@@ -14,6 +14,7 @@ import (
"strings"
"github.com/yuin/goldmark"
"github.com/yuin/goldmark/extension"
"maunium.net/go/mautrix"
"maunium.net/go/mautrix/crypto"
"maunium.net/go/mautrix/crypto/cryptohelper"
@@ -285,10 +286,20 @@ func (c *Client) SendMarkdown(ctx context.Context, roomID, markdown string) erro
return err
}
// mdToHTML converts a Markdown string to HTML using goldmark.
// mdToHTML converts a Markdown string to HTML using goldmark with full extensions.
var mdParser = goldmark.New(
goldmark.WithExtensions(
extension.GFM,
extension.DefinitionList,
extension.Footnote,
extension.Typographer,
extension.CJK,
),
)
func mdToHTML(md string) string {
var buf bytes.Buffer
if err := goldmark.Convert([]byte(md), &buf); err != nil {
if err := mdParser.Convert([]byte(md), &buf); err != nil {
return md // fallback to raw markdown on error
}
return buf.String()