[MM-24714] Render markdown in email notifications (#18043)

Automatic Merge
Этот коммит содержится в:
Joe
2021-09-01 10:59:01 +01:00
коммит произвёл GitHub
родитель 9534f9fb62
Коммит 0b79defcbb
3 изменённых файлов: 142 добавлений и 2 удалений

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

@@ -4,6 +4,8 @@
package utils
import (
"html"
"regexp"
"strings"
"github.com/yuin/goldmark"
@@ -33,6 +35,28 @@ func StripMarkdown(markdown string) (string, error) {
return strings.TrimSpace(buf.String()), nil
}
// MarkdownToHTML takes a string containing Markdown and returns a string with HTML tagged version
func MarkdownToHTML(markdown string) (string, error) {
// Unescape any blockquote text to be parsed by the markdown parser.
re := regexp.MustCompile(`^|\n(>)`)
markdownClean := re.ReplaceAllFunc([]byte(markdown), func(s []byte) []byte {
out := html.UnescapeString(string(s))
return []byte(out)
})
md := goldmark.New(
goldmark.WithExtensions(extension.GFM),
)
var b strings.Builder
err := md.Convert(markdownClean, &b)
if err != nil {
return "", err
}
return b.String(), nil
}
type notificationRenderer struct {
}