mirror of
1
Fork 0

updates markdown parsing to reduce allocations in the same way as the plain text formatter (#2252)

This commit is contained in:
kim 2023-10-05 13:22:40 +01:00 committed by GitHub
parent e0f0d320f6
commit 6e508830e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 2 deletions

View File

@ -21,6 +21,7 @@ import (
"bytes" "bytes"
"context" "context"
"codeberg.org/gruf/go-byteutil"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" "github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/log" "github.com/superseriousbusiness/gotosocial/internal/log"
"github.com/yuin/goldmark" "github.com/yuin/goldmark"
@ -65,17 +66,21 @@ func (f *Formatter) FromMarkdown(
), ),
) )
// Convert input string to bytes
// without performing any allocs.
bInput := byteutil.S2B(input)
// Parse input into HTML. // Parse input into HTML.
var htmlBytes bytes.Buffer var htmlBytes bytes.Buffer
if err := md.Convert( if err := md.Convert(
[]byte(input), bInput,
&htmlBytes, &htmlBytes,
); err != nil { ); err != nil {
log.Errorf(ctx, "error formatting markdown input to HTML: %s", err) log.Errorf(ctx, "error formatting markdown input to HTML: %s", err)
} }
// Clean and shrink HTML. // Clean and shrink HTML.
result.HTML = htmlBytes.String() result.HTML = byteutil.B2S(htmlBytes.Bytes())
result.HTML = SanitizeToHTML(result.HTML) result.HTML = SanitizeToHTML(result.HTML)
result.HTML = MinifyHTML(result.HTML) result.HTML = MinifyHTML(result.HTML)