mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 03:29:40 +00:00 
			
		
		
		
	Render email addresses as such if followed by punctuation (#27987)
Added the following characters to the regular expression for the email: - , - ; - ? - ! Also added a test case. - Fixes #27616 # Before  # After  Signed-off-by: Yarden Shoham <git@yardenshoham.com>
This commit is contained in:
		| @@ -66,7 +66,7 @@ var ( | |||||||
| 	// well as the HTML5 spec: | 	// well as the HTML5 spec: | ||||||
| 	//   http://spec.commonmark.org/0.28/#email-address | 	//   http://spec.commonmark.org/0.28/#email-address | ||||||
| 	//   https://html.spec.whatwg.org/multipage/input.html#e-mail-state-(type%3Demail) | 	//   https://html.spec.whatwg.org/multipage/input.html#e-mail-state-(type%3Demail) | ||||||
| 	emailRegex = regexp.MustCompile("(?:\\s|^|\\(|\\[)([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9]{2,}(?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+)(?:\\s|$|\\)|\\]|\\.(\\s|$))") | 	emailRegex = regexp.MustCompile("(?:\\s|^|\\(|\\[)([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9]{2,}(?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+)(?:\\s|$|\\)|\\]|;|,|\\?|!|\\.(\\s|$))") | ||||||
|  |  | ||||||
| 	// blackfriday extensions create IDs like fn:user-content-footnote | 	// blackfriday extensions create IDs like fn:user-content-footnote | ||||||
| 	blackfridayExtRegex = regexp.MustCompile(`[^:]*:user-content-`) | 	blackfridayExtRegex = regexp.MustCompile(`[^:]*:user-content-`) | ||||||
|   | |||||||
| @@ -264,6 +264,18 @@ func TestRender_email(t *testing.T) { | |||||||
| 		"send email to info@gitea.co.uk.", | 		"send email to info@gitea.co.uk.", | ||||||
| 		`<p>send email to <a href="mailto:info@gitea.co.uk" rel="nofollow">info@gitea.co.uk</a>.</p>`) | 		`<p>send email to <a href="mailto:info@gitea.co.uk" rel="nofollow">info@gitea.co.uk</a>.</p>`) | ||||||
|  |  | ||||||
|  | 	test( | ||||||
|  | 		`j.doe@example.com, | ||||||
|  | 	j.doe@example.com. | ||||||
|  | 	j.doe@example.com; | ||||||
|  | 	j.doe@example.com? | ||||||
|  | 	j.doe@example.com!`, | ||||||
|  | 		`<p><a href="mailto:j.doe@example.com" rel="nofollow">j.doe@example.com</a>,<br/> | ||||||
|  | <a href="mailto:j.doe@example.com" rel="nofollow">j.doe@example.com</a>.<br/> | ||||||
|  | <a href="mailto:j.doe@example.com" rel="nofollow">j.doe@example.com</a>;<br/> | ||||||
|  | <a href="mailto:j.doe@example.com" rel="nofollow">j.doe@example.com</a>?<br/> | ||||||
|  | <a href="mailto:j.doe@example.com" rel="nofollow">j.doe@example.com</a>!</p>`) | ||||||
|  |  | ||||||
| 	// Test that should *not* be turned into email links | 	// Test that should *not* be turned into email links | ||||||
| 	test( | 	test( | ||||||
| 		"\"info@gitea.com\"", | 		"\"info@gitea.com\"", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user