MM-48089 Use ReplaceAllStringFunc to avoid double conversion

Этот коммит содержится в:
Maximilian Ripper
2023-01-20 13:36:02 +01:00
родитель dd0eac29d0
Коммит 5b80211e66

Просмотреть файл

@@ -41,15 +41,13 @@ var blockquoteReg = regexp.MustCompile(`^|\n(>)`)
// MarkdownToHTML takes a string containing Markdown and returns a string with HTML tagged version // MarkdownToHTML takes a string containing Markdown and returns a string with HTML tagged version
func MarkdownToHTML(markdown, siteURL string) (string, error) { func MarkdownToHTML(markdown, siteURL string) (string, error) {
// Turn relative links into absolute links // Turn relative links into absolute links
absLinkMarkdown := relLinkReg.ReplaceAllFunc([]byte(markdown), func(s []byte) []byte { absLinkMarkdown := relLinkReg.ReplaceAllStringFunc(markdown, func(s string) string {
out := relLinkReg.ReplaceAllString(string(s), "[$1]("+siteURL+"$2)") return relLinkReg.ReplaceAllString(s, "[$1]("+siteURL+"$2)")
return []byte(out)
}) })
// Unescape any blockquote text to be parsed by the markdown parser. // Unescape any blockquote text to be parsed by the markdown parser.
markdownClean := blockquoteReg.ReplaceAllFunc(absLinkMarkdown, func(s []byte) []byte { markdownClean := blockquoteReg.ReplaceAllStringFunc(absLinkMarkdown, func(s string) string {
out := html.UnescapeString(string(s)) return html.UnescapeString(s)
return []byte(out)
}) })
md := goldmark.New( md := goldmark.New(
@@ -58,7 +56,7 @@ func MarkdownToHTML(markdown, siteURL string) (string, error) {
var b strings.Builder var b strings.Builder
err := md.Convert(markdownClean, &b) err := md.Convert([]byte(markdownClean), &b)
if err != nil { if err != nil {
return "", err return "", err
} }