]> source.dussan.org Git - gitea.git/commitdiff
Fix mention in comments like (@dblk) (#3655) v0.9.99
authorRémy Boulanouar <rboulanouar@gmail.com>
Mon, 17 Oct 2016 02:17:59 +0000 (04:17 +0200)
committer无闻 <u@gogs.io>
Mon, 17 Oct 2016 02:17:59 +0000 (22:17 -0400)
* Fix mention in comments like (@dblk)

* Better fix to avoid making link for "Hello@DblK"

modules/markdown/markdown.go

index a15501ec8d38fd5002182e0b4ef5d4f49d2769d5..6724b248ad0bb6568b33ae99a653b78abeea0c8e 100644 (file)
@@ -76,7 +76,7 @@ func IsReadmeFile(name string) bool {
 
 var (
        // MentionPattern matches string that mentions someone, e.g. @Unknwon
-       MentionPattern = regexp.MustCompile(`(\s|^)@[0-9a-zA-Z-_\.]+`)
+       MentionPattern = regexp.MustCompile(`(\s|^|\W)@[0-9a-zA-Z-_\.]+`)
 
        // CommitPattern matches link to certain commit with or without trailing hash,
        // e.g. https://try.gogs.io/gogs/gogs/commit/d8a994ef243349f321568f9e36d5c3f444b99cae#diff-2
@@ -101,7 +101,7 @@ var (
 func FindAllMentions(content string) []string {
        mentions := MentionPattern.FindAllString(content, -1)
        for i := range mentions {
-               mentions[i] = strings.TrimSpace(mentions[i])[1:] // Strip @ character
+               mentions[i] = mentions[i][strings.Index(mentions[i], "@")+1:] // Strip @ character
        }
        return mentions
 }
@@ -275,7 +275,7 @@ func RenderSha1CurrentPattern(rawBytes []byte, urlPrefix string) []byte {
 func RenderSpecialLink(rawBytes []byte, urlPrefix string, metas map[string]string) []byte {
        ms := MentionPattern.FindAll(rawBytes, -1)
        for _, m := range ms {
-               m = bytes.TrimSpace(m)
+               m = m[bytes.Index(m, []byte("@")):]
                rawBytes = bytes.Replace(rawBytes, m,
                        []byte(fmt.Sprintf(`<a href="%s/%s">%s</a>`, setting.AppSubUrl, m[1:], m)), -1)
        }