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:
+13
-2
@@ -14,6 +14,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/yuin/goldmark"
|
"github.com/yuin/goldmark"
|
||||||
|
"github.com/yuin/goldmark/extension"
|
||||||
"maunium.net/go/mautrix"
|
"maunium.net/go/mautrix"
|
||||||
"maunium.net/go/mautrix/crypto"
|
"maunium.net/go/mautrix/crypto"
|
||||||
"maunium.net/go/mautrix/crypto/cryptohelper"
|
"maunium.net/go/mautrix/crypto/cryptohelper"
|
||||||
@@ -285,10 +286,20 @@ func (c *Client) SendMarkdown(ctx context.Context, roomID, markdown string) erro
|
|||||||
return err
|
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 {
|
func mdToHTML(md string) string {
|
||||||
var buf bytes.Buffer
|
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 md // fallback to raw markdown on error
|
||||||
}
|
}
|
||||||
return buf.String()
|
return buf.String()
|
||||||
|
|||||||
Reference in New Issue
Block a user