Skip to content

Commit 78d6006

Browse files
committed
Code optimization
1 parent 7c36155 commit 78d6006

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

modules/templates/helper.go

+19-10
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"runtime"
2020
"strings"
2121
"time"
22+
"unicode"
2223

2324
"code.gitea.io/gitea/models"
2425
"code.gitea.io/gitea/modules/base"
@@ -338,16 +339,19 @@ func RenderCommitMessageLink(msg, urlPrefix, urlDefault string, metas map[string
338339
// RenderCommitMessageLinkSubject renders commit message as a XXS-safe link to
339340
// the provided default url, handling for special links without email to links.
340341
func RenderCommitMessageLinkSubject(msg, urlPrefix, urlDefault string, metas map[string]string) template.HTML {
341-
cleanMsg := template.HTMLEscapeString(msg)
342-
343-
msgLines := strings.Split(strings.TrimSpace(string(cleanMsg)), "\n")
344-
if len(msgLines[0]) == 0 {
342+
msgLine := strings.TrimLeftFunc(msg, unicode.IsSpace)
343+
lineEnd := strings.IndexByte(msgLine, '\n')
344+
if lineEnd > 0 {
345+
msgLine = msgLine[:lineEnd]
346+
}
347+
msgLine = strings.TrimRightFunc(msgLine, unicode.IsSpace)
348+
if len(msgLine) == 0 {
345349
return template.HTML("")
346350
}
347351

348352
// we can safely assume that it will not return any error, since there
349353
// shouldn't be any special HTML.
350-
renderedMessage, err := markup.RenderCommitMessageSubject([]byte(msgLines[0]), urlPrefix, urlDefault, metas)
354+
renderedMessage, err := markup.RenderCommitMessageSubject([]byte(template.HTMLEscapeString(msgLine)), urlPrefix, urlDefault, metas)
351355
if err != nil {
352356
log.Error("RenderCommitMessageSubject: %v", err)
353357
return template.HTML("")
@@ -357,14 +361,19 @@ func RenderCommitMessageLinkSubject(msg, urlPrefix, urlDefault string, metas map
357361

358362
// RenderCommitBody extracts the body of a commit message without its title.
359363
func RenderCommitBody(msg, urlPrefix string, metas map[string]string) template.HTML {
360-
cleanMsg := template.HTMLEscapeString(msg)
361-
362-
msgLines := strings.Split(strings.TrimSpace(string(cleanMsg)), "\n")
363-
if len(msgLines) <= 1 {
364+
msgLine := strings.TrimRightFunc(msg, unicode.IsSpace)
365+
lineEnd := strings.IndexByte(msgLine, '\n')
366+
if lineEnd > 0 {
367+
msgLine = msgLine[lineEnd+1:]
368+
} else {
369+
return template.HTML("")
370+
}
371+
msgLine = strings.TrimLeftFunc(msgLine, unicode.IsSpace)
372+
if len(msgLine) == 0 {
364373
return template.HTML("")
365374
}
366375

367-
renderedMessage, err := markup.RenderCommitMessage([]byte(strings.Join(msgLines[1:], "\n")), urlPrefix, "", metas)
376+
renderedMessage, err := markup.RenderCommitMessage([]byte(template.HTMLEscapeString(msgLine)), urlPrefix, "", metas)
368377
if err != nil {
369378
log.Error("RenderCommitMessage: %v", err)
370379
return ""

0 commit comments

Comments
 (0)