Unknwon 9 years ago
parent
commit
9b6c835715
1 changed files with 11 additions and 0 deletions
  1. 11 0
      modules/base/markdown.go

+ 11 - 0
modules/base/markdown.go

@@ -231,9 +231,15 @@ func RenderRawMarkdown(body []byte, urlPrefix string) []byte {
 	return body
 }
 
+var (
+	leftAngleBracket  = []byte("</")
+	rightAngleBracket = []byte(">")
+)
+
 // PostProcessMarkdown treats different types of HTML differently,
 // and only renders special links for plain text blocks.
 func PostProcessMarkdown(rawHtml []byte, urlPrefix string) []byte {
+	var startTag string
 	var buf bytes.Buffer
 	tokenizer := html.NewTokenizer(bytes.NewReader(rawHtml))
 	for html.ErrorToken != tokenizer.Next() {
@@ -243,6 +249,7 @@ func PostProcessMarkdown(rawHtml []byte, urlPrefix string) []byte {
 			buf.Write(RenderSpecialLink([]byte(token.String()), urlPrefix))
 
 		case html.StartTagToken:
+			startTag = token.Data
 			buf.WriteString(token.String())
 			tagName := token.Data
 			// If this is an excluded tag, we skip processing all output until a close tag is encountered.
@@ -258,6 +265,10 @@ func PostProcessMarkdown(rawHtml []byte, urlPrefix string) []byte {
 				}
 			}
 
+		case html.EndTagToken:
+			buf.Write(leftAngleBracket)
+			buf.WriteString(startTag)
+			buf.Write(rightAngleBracket)
 		default:
 			buf.WriteString(token.String())
 		}