mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	* 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 messages
This commit is contained in:
		@@ -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",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user