|
|
@@ -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("</([a-z]+)>\n</(ul|ol|blockquote)>") |
|
|
|
|
|
|
|
markeddownReg = regexp.MustCompile("<p>(.+)</p>") |
|
|
|
) |
|
|
|
|
|
|
|
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 |
|
|
|
} |