From be5c5d2acb37a32d253f964fcc928ffcfb94c2f4 Mon Sep 17 00:00:00 2001 From: Matt Baer Date: Mon, 30 Apr 2018 23:37:39 -0400 Subject: [PATCH] Add ApplyBasicMarkdown func --- posts/render.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/posts/render.go b/posts/render.go index 90099dd..157bed2 100644 --- a/posts/render.go +++ b/posts/render.go @@ -4,11 +4,15 @@ import ( "github.com/microcosm-cc/bluemonday" "github.com/writeas/saturday" "regexp" + "strings" + "unicode" ) var ( blockReg = regexp.MustCompile("<(ul|ol|blockquote)>\n") endBlockReg = regexp.MustCompile("\n") + + markeddownReg = regexp.MustCompile("

(.+)

") ) func ApplyMarkdown(data []byte) string { @@ -35,3 +39,25 @@ func ApplyMarkdown(data []byte) string { return outHTML } + +func ApplyBasicMarkdown(data []byte) string { + mdExtensions := 0 | + blackfriday.EXTENSION_STRIKETHROUGH | + blackfriday.EXTENSION_SPACE_HEADERS | + blackfriday.EXTENSION_HEADER_IDS + htmlFlags := 0 | + blackfriday.HTML_SKIP_HTML | + blackfriday.HTML_USE_SMARTYPANTS | + blackfriday.HTML_SMARTYPANTS_DASHES + + // Generate Markdown + md := blackfriday.Markdown([]byte(data), blackfriday.HtmlRenderer(htmlFlags, "", ""), mdExtensions) + // Strip out bad HTML + policy := bluemonday.UGCPolicy() + policy.AllowAttrs("class", "id").Globally() + outHTML := string(policy.SanitizeBytes(md)) + outHTML = markeddownReg.ReplaceAllString(outHTML, "$1") + outHTML = strings.TrimRightFunc(outHTML, unicode.IsSpace) + + return outHTML +}