MM-48089 Compile regular expressions once instead of doing it with every call to MarkdownToHTML
Этот коммит содержится в:
@@ -35,18 +35,19 @@ func StripMarkdown(markdown string) (string, error) {
|
|||||||
return strings.TrimSpace(buf.String()), nil
|
return strings.TrimSpace(buf.String()), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var relLinkReg = regexp.MustCompile(`\[(.*)]\((/.*)\)`)
|
||||||
|
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
|
||||||
relLinkRe := regexp.MustCompile(`\[(.*)]\((/.*)\)`)
|
absLinkMarkdown := relLinkReg.ReplaceAllFunc([]byte(markdown), func(s []byte) []byte {
|
||||||
absLinkMarkdown := relLinkRe.ReplaceAllFunc([]byte(markdown), func(s []byte) []byte {
|
out := relLinkReg.ReplaceAllString(string(s), "[$1]("+siteURL+"$2)")
|
||||||
out := relLinkRe.ReplaceAllString(string(s), "[$1]("+siteURL+"$2)")
|
|
||||||
return []byte(out)
|
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.
|
||||||
re := regexp.MustCompile(`^|\n(>)`)
|
markdownClean := blockquoteReg.ReplaceAllFunc(absLinkMarkdown, func(s []byte) []byte {
|
||||||
markdownClean := re.ReplaceAllFunc(absLinkMarkdown, func(s []byte) []byte {
|
|
||||||
out := html.UnescapeString(string(s))
|
out := html.UnescapeString(string(s))
|
||||||
return []byte(out)
|
return []byte(out)
|
||||||
})
|
})
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user