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"
|
||||
|
||||
"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()
|
||||
|
||||
Reference in New Issue
Block a user