MM-48089 Use ReplaceAllStringFunc to avoid double conversion
Этот коммит содержится в:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user