From f979d0d6b9ae2c4b5c553df13dfe49b81d8396c1 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 12 May 2014 19:32:35 -0400 Subject: [PATCH] Fix #138 --- modules/base/markdown.go | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/modules/base/markdown.go b/modules/base/markdown.go index 057e1b04773..0825decb444 100644 --- a/modules/base/markdown.go +++ b/modules/base/markdown.go @@ -97,12 +97,31 @@ var ( ) func RenderSpecialLink(rawBytes []byte, urlPrefix string) []byte { - ms := MentionPattern.FindAll(rawBytes, -1) - for _, m := range ms { - rawBytes = bytes.Replace(rawBytes, m, - []byte(fmt.Sprintf(`%s`, m[1:], m)), -1) + buf := bytes.NewBufferString("") + inCodeBlock := false + codeBlockPrefix := []byte("```") + lineBreak := []byte("\n") + tab := []byte("\t") + lines := bytes.Split(rawBytes, lineBreak) + for _, line := range lines { + if bytes.HasPrefix(line, codeBlockPrefix) { + inCodeBlock = !inCodeBlock + } + + if !inCodeBlock && !bytes.HasPrefix(line, tab) { + ms := MentionPattern.FindAll(line, -1) + for _, m := range ms { + line = bytes.Replace(line, m, + []byte(fmt.Sprintf(`%s`, m[1:], m)), -1) + } + } + + buf.Write(line) + buf.Write(lineBreak) } - ms = commitPattern.FindAll(rawBytes, -1) + + rawBytes = buf.Bytes() + ms := commitPattern.FindAll(rawBytes, -1) for _, m := range ms { m = bytes.TrimSpace(m) i := strings.Index(string(m), "commit/")