aboutsummaryrefslogtreecommitdiff
path: root/pkg/markup
diff options
context:
space:
mode:
authorCosmin Stroe <cosmin@mailbox.org>2018-04-21 11:08:11 -0500
committer无闻 <u@gogs.io>2018-04-21 12:08:11 -0400
commit54b931134404a3bb07dc0c1ec3d497d692b90557 (patch)
tree1e5c5157d53fcad4563d05e0ab653cedaa024bdb /pkg/markup
parent9387b79b981c268df4bbc97811b9d844d0799dec (diff)
pkg/markup/markdown: Issue mentions should also render with square brackets (#4707)
* gofmt reformat of markdown.go
Diffstat (limited to 'pkg/markup')
-rw-r--r--pkg/markup/markdown.go2
-rw-r--r--pkg/markup/markup.go9
-rw-r--r--pkg/markup/markup_test.go26
3 files changed, 32 insertions, 5 deletions
diff --git a/pkg/markup/markdown.go b/pkg/markup/markdown.go
index 55e40dc3..1f055549 100644
--- a/pkg/markup/markdown.go
+++ b/pkg/markup/markdown.go
@@ -14,8 +14,8 @@ import (
"github.com/russross/blackfriday"
- "github.com/gogits/gogs/pkg/tool"
"github.com/gogits/gogs/pkg/setting"
+ "github.com/gogits/gogs/pkg/tool"
)
// IsMarkdownFile reports whether name looks like a Markdown file based on its extension.
diff --git a/pkg/markup/markup.go b/pkg/markup/markup.go
index d043a993..b9682731 100644
--- a/pkg/markup/markup.go
+++ b/pkg/markup/markup.go
@@ -45,9 +45,9 @@ var (
// e.g. https://try.gogs.io/gogs/gogs/issues/4#issue-685
IssueFullPattern = regexp.MustCompile(`(\s|^)https?.*issues/[0-9]+(#+[0-9a-zA-Z-]*)?`)
// IssueNumericPattern matches string that references to a numeric issue, e.g. #1287
- IssueNumericPattern = regexp.MustCompile(`( |^|\()#[0-9]+\b`)
+ IssueNumericPattern = regexp.MustCompile(`( |^|\(|\[)#[0-9]+\b`)
// IssueAlphanumericPattern matches string that references to an alphanumeric issue, e.g. ABC-1234
- IssueAlphanumericPattern = regexp.MustCompile(`( |^|\()[A-Z]{1,10}-[1-9][0-9]*\b`)
+ IssueAlphanumericPattern = regexp.MustCompile(`( |^|\(|\[)[A-Z]{1,10}-[1-9][0-9]*\b`)
// CrossReferenceIssueNumericPattern matches string that references a numeric issue in a difference repository
// e.g. gogits/gogs#12345
CrossReferenceIssueNumericPattern = regexp.MustCompile(`( |^)[0-9a-zA-Z-_\.]+/[0-9a-zA-Z-_\.]+#[0-9]+\b`)
@@ -97,8 +97,9 @@ func RenderIssueIndexPattern(rawBytes []byte, urlPrefix string, metas map[string
ms := pattern.FindAll(rawBytes, -1)
for _, m := range ms {
- if m[0] == ' ' || m[0] == '(' {
- m = m[1:] // ignore leading space or opening parentheses
+ if m[0] == ' ' || m[0] == '(' || m[0] == '[' {
+ // ignore leading space, opening parentheses, or opening square brackets
+ m = m[1:]
}
var link string
if metas == nil {
diff --git a/pkg/markup/markup_test.go b/pkg/markup/markup_test.go
index 6e19a23c..b741cc5d 100644
--- a/pkg/markup/markup_test.go
+++ b/pkg/markup/markup_test.go
@@ -121,6 +121,19 @@ func Test_RenderIssueIndexPattern(t *testing.T) {
So(string(RenderIssueIndexPattern([]byte(testCases[i]), urlPrefix, metas)), ShouldEqual, testCases[i+1])
}
})
+ Convey("It should render issue mention in square brackets", func() {
+ testCases := []string{
+ "[#54321 issue]", "[<a href=\"/prefix/issues/54321\">#54321</a> issue]",
+ "test [#54321] issue", "test [<a href=\"/prefix/issues/54321\">#54321</a>] issue",
+ "test [#54321 extra] issue", "test [<a href=\"/prefix/issues/54321\">#54321</a> extra] issue",
+ "test [#54321 issue]", "test [<a href=\"/prefix/issues/54321\">#54321</a> issue]",
+ "test [#54321]", "test [<a href=\"/prefix/issues/54321\">#54321</a>]",
+ }
+
+ for i := 0; i < len(testCases); i += 2 {
+ So(string(RenderIssueIndexPattern([]byte(testCases[i]), urlPrefix, metas)), ShouldEqual, testCases[i+1])
+ }
+ })
Convey("It should render multiple issue mentions in the same line", func() {
testCases := []string{
"#54321 #1243", "<a href=\"/prefix/issues/54321\">#54321</a> <a href=\"/prefix/issues/1243\">#1243</a>",
@@ -265,6 +278,19 @@ func Test_RenderIssueIndexPattern(t *testing.T) {
So(string(RenderIssueIndexPattern([]byte(testCases[i]), urlPrefix, metas)), ShouldEqual, testCases[i+1])
}
})
+ Convey("It should render issue mention in square brackets", func() {
+ testCases := []string{
+ "[ABG-124] issue", "[<a href=\"https://someurl.com/someuser/somerepo/?b=ABG-124\">ABG-124</a>] issue",
+ "test [ABG-124] issue", "test [<a href=\"https://someurl.com/someuser/somerepo/?b=ABG-124\">ABG-124</a>] issue",
+ "test [ABG-124 extra] issue", "test [<a href=\"https://someurl.com/someuser/somerepo/?b=ABG-124\">ABG-124</a> extra] issue",
+ "test [ABG-124 issue]", "test [<a href=\"https://someurl.com/someuser/somerepo/?b=ABG-124\">ABG-124</a> issue]",
+ "test [ABG-124]", "test [<a href=\"https://someurl.com/someuser/somerepo/?b=ABG-124\">ABG-124</a>]",
+ }
+
+ for i := 0; i < len(testCases); i += 2 {
+ So(string(RenderIssueIndexPattern([]byte(testCases[i]), urlPrefix, metas)), ShouldEqual, testCases[i+1])
+ }
+ })
Convey("It should render multiple issue mentions in the same line", func() {
testCases := []string{
"ABG-124 OTT-4321", "<a href=\"https://someurl.com/someuser/somerepo/?b=ABG-124\">ABG-124</a> <a href=\"https://someurl.com/someuser/somerepo/?b=OTT-4321\">OTT-4321</a>",