Compare commits

..

6 Commits

Author SHA1 Message Date
ed1d456912 Merge branch 'devel' into feature/id-for-hmtl-headers 2025-02-13 17:41:19 +01:00
7cc4ef3d48 merge upstream 2025-02-13 17:39:39 +01:00
547c9a5567 revert variable name 2025-02-13 17:29:01 +01:00
f9e16c7c36 make headers id great again 2025-02-10 23:58:39 +01:00
351a1d2f77 merge upstream 2025-02-10 23:46:40 +01:00
faa69ed9a9 merge upstream 2025-02-09 22:35:41 +01:00

View File

@ -6,16 +6,35 @@ import (
"github.com/microcosm-cc/bluemonday" "github.com/microcosm-cc/bluemonday"
"github.com/yuin/goldmark" "github.com/yuin/goldmark"
"github.com/yuin/goldmark/extension"
"github.com/yuin/goldmark/parser"
"github.com/yuin/goldmark/renderer/html"
) )
func ConvertToHTML(md string) (string, error) { func ConvertToHTML(md string) (string, error) {
var buf bytes.Buffer var buf bytes.Buffer
if err := goldmark.Convert([]byte(md), &buf); err != nil { // Goldmark-Instanz mit GFM und aktivierter Attribute-Unterstützung initialisieren.
gm := goldmark.New(
goldmark.WithExtensions(
extension.GFM,
),
goldmark.WithParserOptions(
parser.WithAttribute(),
),
goldmark.WithRendererOptions(
html.WithUnsafe(), // Falls du HTML-Inhalte erlauben möchtest
),
)
// Markdown in HTML konvertieren.
if err := gm.Convert([]byte(md), &buf); err != nil {
return "", fmt.Errorf("error converting markdown to html: %v", err) return "", fmt.Errorf("error converting markdown to html: %v", err)
} }
// Bluemonday-Policy anpassen, sodass id-Attribute auf h1-h6 erlaubt sind.
p := bluemonday.UGCPolicy() p := bluemonday.UGCPolicy()
p.AllowAttrs("id").OnElements("h1", "h2", "h3", "h4", "h5", "h6")
html := p.Sanitize(buf.String()) html := p.Sanitize(buf.String())
return html, nil return html, nil