From c8650aef0aefb06ff416912e4ae5f42eaa53ef63 Mon Sep 17 00:00:00 2001 From: mrsdizzie Date: Wed, 27 Mar 2019 11:37:54 -0400 Subject: [PATCH] Change order that PostProcess Processors are run (#6445) Make sure Processors that work on full links are run first so that something matching another pattern doesn't alter a link before we get to it, for example: https://stackoverflow.com/questions/2896191/what-is-go-used-fore Fixes #4813 --- modules/markup/html.go | 14 +++++++------- modules/markup/html_test.go | 6 ++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/modules/markup/html.go b/modules/markup/html.go index f4c5d97480..e016b67d0c 100644 --- a/modules/markup/html.go +++ b/modules/markup/html.go @@ -152,15 +152,15 @@ func (p *postProcessError) Error() string { type processor func(ctx *postProcessCtx, node *html.Node) var defaultProcessors = []processor{ - mentionProcessor, - shortLinkProcessor, fullIssuePatternProcessor, + fullSha1PatternProcessor, + shortLinkProcessor, + linkProcessor, + mentionProcessor, issueIndexPatternProcessor, crossReferenceIssueIndexPatternProcessor, - fullSha1PatternProcessor, sha1CurrentPatternProcessor, emailAddressProcessor, - linkProcessor, } type postProcessCtx struct { @@ -194,14 +194,14 @@ func PostProcess( } var commitMessageProcessors = []processor{ - mentionProcessor, fullIssuePatternProcessor, + fullSha1PatternProcessor, + linkProcessor, + mentionProcessor, issueIndexPatternProcessor, crossReferenceIssueIndexPatternProcessor, - fullSha1PatternProcessor, sha1CurrentPatternProcessor, emailAddressProcessor, - linkProcessor, } // RenderCommitMessage will use the same logic as PostProcess, but will disable diff --git a/modules/markup/html_test.go b/modules/markup/html_test.go index ff68201995..8d113b18a1 100644 --- a/modules/markup/html_test.go +++ b/modules/markup/html_test.go @@ -113,6 +113,12 @@ func TestRender_links(t *testing.T) { test( "https://foo_bar.example.com/", `

https://foo_bar.example.com/

`) + test( + "https://stackoverflow.com/questions/2896191/what-is-go-used-fore", + `

https://stackoverflow.com/questions/2896191/what-is-go-used-fore

`) + test( + "https://username:password@gitea.com", + `

https://username:password@gitea.com

`) // Test that should *not* be turned into URL test(