summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNuno Silva <nuno-silva@users.noreply.github.com>2021-01-03 15:11:10 +0000
committerGitHub <noreply@github.com>2021-01-03 23:11:10 +0800
commit44ff1d6a1e20694b678ba53b0f1e03e9c7c5b8a6 (patch)
tree96e381eb5e798080509e2c588a83dfd17770dfb7
parent7576e37a65729363370d6672ff6e69e87b68ac5f (diff)
downloadgitea-44ff1d6a1e20694b678ba53b0f1e03e9c7c5b8a6.tar.gz
gitea-44ff1d6a1e20694b678ba53b0f1e03e9c7c5b8a6.zip
Render links for commit hashes followed by comma (#14224)
Regex test cases: https://regex101.com/r/mVbPxM/2/ fixes #14223
-rw-r--r--modules/markup/html.go2
-rw-r--r--modules/markup/html_test.go6
2 files changed, 7 insertions, 1 deletions
diff --git a/modules/markup/html.go b/modules/markup/html.go
index 7ac23d0503..9e4b1a3d5d 100644
--- a/modules/markup/html.go
+++ b/modules/markup/html.go
@@ -43,7 +43,7 @@ var (
// sha1CurrentPattern matches string that represents a commit SHA, e.g. d8a994ef243349f321568f9e36d5c3f444b99cae
// Although SHA1 hashes are 40 chars long, the regex matches the hash from 7 to 40 chars in length
// so that abbreviated hash links can be used as well. This matches git and github useability.
- sha1CurrentPattern = regexp.MustCompile(`(?:\s|^|\(|\[)([0-9a-f]{7,40})(?:\s|$|\)|\]|\.(\s|$))`)
+ sha1CurrentPattern = regexp.MustCompile(`(?:\s|^|\(|\[)([0-9a-f]{7,40})(?:\s|$|\)|\]|[.,](\s|$))`)
// shortLinkPattern matches short but difficult to parse [[name|link|arg=test]] syntax
shortLinkPattern = regexp.MustCompile(`\[\[(.*?)\]\](\w*)`)
diff --git a/modules/markup/html_test.go b/modules/markup/html_test.go
index a3c273e628..b04781489a 100644
--- a/modules/markup/html_test.go
+++ b/modules/markup/html_test.go
@@ -46,6 +46,12 @@ func TestRender_Commits(t *testing.T) {
test("/home/gitea/"+sha, "<p>/home/gitea/"+sha+"</p>")
test("deadbeef", `<p>deadbeef</p>`)
test("d27ace93", `<p>d27ace93</p>`)
+ test(sha[:14]+".x", `<p>`+sha[:14]+`.x</p>`)
+
+ expected14 := `<a href="` + commit[:len(commit)-(40-14)] + `" rel="nofollow"><code>` + sha[:10] + `</code></a>`
+ test(sha[:14]+".", `<p>`+expected14+`.</p>`)
+ test(sha[:14]+",", `<p>`+expected14+`,</p>`)
+ test("["+sha[:14]+"]", `<p>[`+expected14+`]</p>`)
}
func TestRender_CrossReferences(t *testing.T) {