From 3ae27e409b8aec89690c7d6103eb6ad4a3f54e6b Mon Sep 17 00:00:00 2001 From: Benoit Donneaux Date: Mon, 3 Jun 2024 22:15:17 +0200 Subject: [PATCH 1/2] Prefix links to wiki pages from comments in ticket Signed-off-by: Benoit Donneaux --- markdown/link.go | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/markdown/link.go b/markdown/link.go index 8ffeff7..123e495 100644 --- a/markdown/link.go +++ b/markdown/link.go @@ -256,25 +256,41 @@ func (converter *DefaultConverter) resolveTicketLink(link string) string { return markLink(issueURL) } -func (converter *DefaultConverter) resolveWikiLink(link string) string { +func (converter *DefaultConverter) resolveWikiLink(ticketID int64, wikiPage string, link string) string { wikiPageName := wikiLinkRegexp.ReplaceAllString(link, `$1`) wikiPageAnchor := wikiLinkRegexp.ReplaceAllString(link, `$2`) translatedPageName := converter.giteaAccessor.TranslateWikiPageName(wikiPageName) + var prefix, suffix string + if ticketID != trac.NullID { + prefix = "wiki/" + } else if wikiPage != "" { + prefix = "" + } if wikiPageAnchor == "" { - return markLink(translatedPageName) + suffix = "" + } else { + suffix = "#" + wikiPageAnchor } - return markLink(translatedPageName + "#" + wikiPageAnchor) + return markLink(prefix + translatedPageName + suffix) } -func (converter *DefaultConverter) resolveWikiCamelCaseLink(link string) string { +func (converter *DefaultConverter) resolveWikiCamelCaseLink(ticketID int64, wikiPage string, link string) string { leadingChar := wikiCamelCaseLinkRegexp.ReplaceAllString(link, `$1`) wikiPageName := wikiCamelCaseLinkRegexp.ReplaceAllString(link, `$2`) wikiPageAnchor := wikiCamelCaseLinkRegexp.ReplaceAllString(link, `$3`) translatedPageName := converter.giteaAccessor.TranslateWikiPageName(wikiPageName) + var prefix, suffix string + if ticketID != trac.NullID { + prefix = "wiki/" + } else if wikiPage != "" { + prefix = "" + } if wikiPageAnchor == "" { - return leadingChar + markLink(translatedPageName) + suffix = "" + } else { + suffix = "#" + wikiPageAnchor } - return leadingChar + markLink(translatedPageName+"#"+wikiPageAnchor) + return leadingChar + markLink(prefix + translatedPageName + suffix) } // convertBrackettedTracLinks converts the various forms of (square) bracketted Trac links into an unbracketted form. @@ -375,11 +391,11 @@ func (converter *DefaultConverter) convertUnbrackettedTracLinks(ticketID int64, }) out = wikiLinkRegexp.ReplaceAllStringFunc(out, func(match string) string { - return converter.resolveWikiLink(match) + return converter.resolveWikiLink(ticketID, wikiPage, match) }) out = wikiCamelCaseLinkRegexp.ReplaceAllStringFunc(out, func(match string) string { - return converter.resolveWikiCamelCaseLink(match) + return converter.resolveWikiCamelCaseLink(ticketID, wikiPage, match) }) return out From 7fbcffbf33b43be6f3febffa25ade92284026008 Mon Sep 17 00:00:00 2001 From: Benoit Donneaux Date: Thu, 13 Jun 2024 22:38:46 +0200 Subject: [PATCH 2/2] Better condition to prefix with path to wiki Signed-off-by: Benoit Donneaux --- markdown/link.go | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/markdown/link.go b/markdown/link.go index 123e495..45b8a16 100644 --- a/markdown/link.go +++ b/markdown/link.go @@ -256,41 +256,31 @@ func (converter *DefaultConverter) resolveTicketLink(link string) string { return markLink(issueURL) } -func (converter *DefaultConverter) resolveWikiLink(ticketID int64, wikiPage string, link string) string { +func (converter *DefaultConverter) resolveWikiLink(path string, link string) string { wikiPageName := wikiLinkRegexp.ReplaceAllString(link, `$1`) wikiPageAnchor := wikiLinkRegexp.ReplaceAllString(link, `$2`) translatedPageName := converter.giteaAccessor.TranslateWikiPageName(wikiPageName) - var prefix, suffix string - if ticketID != trac.NullID { - prefix = "wiki/" - } else if wikiPage != "" { - prefix = "" - } + var suffix string if wikiPageAnchor == "" { suffix = "" } else { suffix = "#" + wikiPageAnchor } - return markLink(prefix + translatedPageName + suffix) + return markLink(path + translatedPageName + suffix) } -func (converter *DefaultConverter) resolveWikiCamelCaseLink(ticketID int64, wikiPage string, link string) string { +func (converter *DefaultConverter) resolveWikiCamelCaseLink(path string, link string) string { leadingChar := wikiCamelCaseLinkRegexp.ReplaceAllString(link, `$1`) wikiPageName := wikiCamelCaseLinkRegexp.ReplaceAllString(link, `$2`) wikiPageAnchor := wikiCamelCaseLinkRegexp.ReplaceAllString(link, `$3`) translatedPageName := converter.giteaAccessor.TranslateWikiPageName(wikiPageName) - var prefix, suffix string - if ticketID != trac.NullID { - prefix = "wiki/" - } else if wikiPage != "" { - prefix = "" - } + var suffix string if wikiPageAnchor == "" { suffix = "" } else { suffix = "#" + wikiPageAnchor } - return leadingChar + markLink(prefix + translatedPageName + suffix) + return leadingChar + markLink(path + translatedPageName + suffix) } // convertBrackettedTracLinks converts the various forms of (square) bracketted Trac links into an unbracketted form. @@ -390,12 +380,17 @@ func (converter *DefaultConverter) convertUnbrackettedTracLinks(ticketID int64, return converter.resolveTicketLink(match) }) + // add a 'wiki/' path for link from ticket + var path = "" + if ticketID != trac.NullID { + path = "wiki/" + } out = wikiLinkRegexp.ReplaceAllStringFunc(out, func(match string) string { - return converter.resolveWikiLink(ticketID, wikiPage, match) + return converter.resolveWikiLink(path, match) }) out = wikiCamelCaseLinkRegexp.ReplaceAllStringFunc(out, func(match string) string { - return converter.resolveWikiCamelCaseLink(ticketID, wikiPage, match) + return converter.resolveWikiCamelCaseLink(path, match) }) return out