diff --git a/modules/markup/html.go b/modules/markup/html.go index 7b1d5a4d9c7cd..1cfc7b1908a82 100644 --- a/modules/markup/html.go +++ b/modules/markup/html.go @@ -5,6 +5,8 @@ package markup import ( "bytes" + "fmt" + "html/template" "io" "regexp" "strings" @@ -196,13 +198,6 @@ func RenderCommitMessage( content string, ) (string, error) { procs := commitMessageProcessors - if ctx.DefaultLink != "" { - // we don't have to fear data races, because being - // commitMessageProcessors of fixed len and cap, every time we append - // something to it the slice is realloc+copied, so append always - // generates the slice ex-novo. - procs = append(procs, genDefaultLinkProcessor(ctx.DefaultLink)) - } return renderProcessString(ctx, procs, content) } @@ -230,17 +225,17 @@ var emojiProcessors = []processor{ // which changes every text node into a link to the passed default link. func RenderCommitMessageSubject( ctx *RenderContext, - content string, + defaultLink, content string, ) (string, error) { procs := commitMessageSubjectProcessors - if ctx.DefaultLink != "" { - // we don't have to fear data races, because being - // commitMessageSubjectProcessors of fixed len and cap, every time we - // append something to it the slice is realloc+copied, so append always - // generates the slice ex-novo. - procs = append(procs, genDefaultLinkProcessor(ctx.DefaultLink)) + rendered, err := renderProcessString(ctx, procs, content) + if err != nil { + return "", err } - return renderProcessString(ctx, procs, content) + if defaultLink != "" { + rendered = fmt.Sprintf(`%s`, template.HTMLEscapeString(defaultLink), rendered) + } + return rendered, nil } // RenderIssueTitle to process title on individual issue/pull page diff --git a/modules/markup/html_link.go b/modules/markup/html_link.go index 023d3e1230ab4..b7562d0aa6d26 100644 --- a/modules/markup/html_link.go +++ b/modules/markup/html_link.go @@ -200,25 +200,6 @@ func linkProcessor(ctx *RenderContext, node *html.Node) { } } -func genDefaultLinkProcessor(defaultLink string) processor { - return func(ctx *RenderContext, node *html.Node) { - ch := &html.Node{ - Parent: node, - Type: html.TextNode, - Data: node.Data, - } - - node.Type = html.ElementNode - node.Data = "a" - node.DataAtom = atom.A - node.Attr = []html.Attribute{ - {Key: "href", Val: defaultLink}, - {Key: "class", Val: "default-link muted"}, - } - node.FirstChild, node.LastChild = ch, ch - } -} - // descriptionLinkProcessor creates links for DescriptionHTML func descriptionLinkProcessor(ctx *RenderContext, node *html.Node) { next := node.NextSibling diff --git a/modules/markup/render.go b/modules/markup/render.go index 80023be77a877..1977dc73f55ef 100644 --- a/modules/markup/render.go +++ b/modules/markup/render.go @@ -58,7 +58,6 @@ type RenderContext struct { // markdownLineBreakStyle (comment, document) Metas map[string]string - DefaultLink string // TODO: need to figure out GitRepo *git.Repository Repo gitrepo.Repository ShaExistCache map[string]bool diff --git a/modules/templates/util_render.go b/modules/templates/util_render.go index aa7b09a1a23a2..8e443446bd69c 100644 --- a/modules/templates/util_render.go +++ b/modules/templates/util_render.go @@ -62,19 +62,18 @@ func (ut *RenderUtils) RenderCommitMessageLinkSubject(msg, urlDefault string, me } msgLine = strings.TrimRightFunc(msgLine, unicode.IsSpace) if len(msgLine) == 0 { - return template.HTML("") + return "" } // we can safely assume that it will not return any error, since there // shouldn't be any special HTML. renderedMessage, err := markup.RenderCommitMessageSubject(&markup.RenderContext{ - Ctx: ut.ctx, - DefaultLink: urlDefault, - Metas: metas, - }, template.HTMLEscapeString(msgLine)) + Ctx: ut.ctx, + Metas: metas, + }, urlDefault, template.HTMLEscapeString(msgLine)) if err != nil { log.Error("RenderCommitMessageSubject: %v", err) - return template.HTML("") + return "" } return renderCodeBlock(template.HTML(renderedMessage)) } diff --git a/modules/templates/util_render_test.go b/modules/templates/util_render_test.go index 498e42f7258da..529507e7eab82 100644 --- a/modules/templates/util_render_test.go +++ b/modules/templates/util_render_test.go @@ -140,7 +140,7 @@ func TestRenderCommitMessage(t *testing.T) { } func TestRenderCommitMessageLinkSubject(t *testing.T) { - expected := `space @mention-user` + expected := `space @mention-user` assert.EqualValues(t, expected, newTestRenderUtils().RenderCommitMessageLinkSubject(testInput(), "https://example.com/link", testMetas)) } diff --git a/routers/common/markup.go b/routers/common/markup.go index 272c3a643b5fa..dd6b286109f80 100644 --- a/routers/common/markup.go +++ b/routers/common/markup.go @@ -51,6 +51,7 @@ func RenderMarkup(ctx *context.Base, repo *context.Repository, mode, text, urlPa case "wiki": renderCtx.Metas = map[string]string{"markdownLineBreakStyle": "document", "markupContentMode": "wiki"} case "file": + // render the repo file content by its extension renderCtx.Metas = map[string]string{"markdownLineBreakStyle": "document"} renderCtx.MarkupType = "" renderCtx.RelativePath = filePath diff --git a/templates/repo/view_file.tmpl b/templates/repo/view_file.tmpl index fb5bc14fe2a79..89bb371e7c7cd 100644 --- a/templates/repo/view_file.tmpl +++ b/templates/repo/view_file.tmpl @@ -29,7 +29,7 @@
{{if .ReadmeInList}} {{svg "octicon-book" 16 "tw-mr-2"}} - {{.FileName}} + {{.FileName}} {{else}} {{template "repo/file_info" .}} {{end}}