* feat: highlight issue references with : e.g. #1287: my commit msg e.g. ABC-1234: my commit msg * ref: update model regex to consistent with issueNumericPattern * test: check highlight issue with : in commits messagestags/v1.9.4
@@ -65,7 +65,7 @@ var ( | |||
) | |||
const issueRefRegexpStr = `(?:([0-9a-zA-Z-_\.]+)/([0-9a-zA-Z-_\.]+))?(#[0-9]+)+` | |||
const issueRefRegexpStrNoKeyword = `(?:\s|^|\(|\[)(?:([0-9a-zA-Z-_\.]+)/([0-9a-zA-Z-_\.]+))?(#[0-9]+)(?:\s|$|\)|\]|\.(\s|$))` | |||
const issueRefRegexpStrNoKeyword = `(?:\s|^|\(|\[)(?:([0-9a-zA-Z-_\.]+)/([0-9a-zA-Z-_\.]+))?(#[0-9]+)(?:\s|$|\)|\]|:|\.(\s|$))` | |||
func assembleKeywordsPattern(words []string) string { | |||
return fmt.Sprintf(`(?i)(?:%s)(?::?) %s`, strings.Join(words, "|"), issueRefRegexpStr) |
@@ -160,6 +160,7 @@ func TestRegExp_issueReferenceKeywordsPat(t *testing.T) { | |||
"#2", | |||
"[#2]", | |||
"please see go-gitea/gitea#5", | |||
"#2:", | |||
} | |||
falseTestCases := []string{ | |||
"kb#2", |
@@ -38,9 +38,9 @@ var ( | |||
mentionPattern = regexp.MustCompile(`(?:\s|^|\(|\[)(@[0-9a-zA-Z-_\.]+)(?:\s|$|\)|\])`) | |||
// issueNumericPattern matches string that references to a numeric issue, e.g. #1287 | |||
issueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[)(#[0-9]+)(?:\s|$|\)|\]|\.(\s|$))`) | |||
issueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[)(#[0-9]+)(?:\s|$|\)|\]|:|\.(\s|$))`) | |||
// issueAlphanumericPattern matches string that references to an alphanumeric issue, e.g. ABC-1234 | |||
issueAlphanumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[)([A-Z]{1,10}-[1-9][0-9]*)(?:\s|$|\)|\]|\.(\s|$))`) | |||
issueAlphanumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[)([A-Z]{1,10}-[1-9][0-9]*)(?:\s|$|\)|\]|:|\.(\s|$))`) | |||
// crossReferenceIssueNumericPattern matches string that references a numeric issue in a different repository | |||
// e.g. gogits/gogs#12345 | |||
crossReferenceIssueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[)([0-9a-zA-Z-_\.]+/[0-9a-zA-Z-_\.]+#[0-9]+)(?:\s|$|\)|\]|\.(\s|$))`) |
@@ -118,6 +118,10 @@ func TestRender_IssueIndexPattern2(t *testing.T) { | |||
test("wow (#54321 #1243)", "wow (%s %s)", 54321, 1243) | |||
test("(#4)(#5)", "(%s)(%s)", 4, 5) | |||
test("#1 (#4321) test", "%s (%s) test", 1, 4321) | |||
// should render with : | |||
test("#1234: test", "%s: test", 1234) | |||
test("wow (#54321: test)", "wow (%s: test)", 54321) | |||
} | |||
func TestRender_IssueIndexPattern3(t *testing.T) { | |||
@@ -237,6 +241,8 @@ func TestRegExp_issueNumericPattern(t *testing.T) { | |||
"#0", | |||
"#1234567890987654321", | |||
" #12", | |||
"#12:", | |||
"ref: #12: msg", | |||
} | |||
falseTestCases := []string{ | |||
"# 1234", | |||
@@ -354,6 +360,7 @@ func TestRegExp_issueAlphanumericPattern(t *testing.T) { | |||
"ABC-123.", | |||
"(ABC-123)", | |||
"[ABC-123]", | |||
"ABC-123:", | |||
} | |||
falseTestCases := []string{ | |||
"RC-08", |