From 9d99f6ab19ac3f97af3ca126720e9075c127a652 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 20 Apr 2021 06:25:08 +0800 Subject: Refactor renders (#15175) * Refactor renders * Some performance optimization * Fix comment * Transform reader * Fix csv test * Fix test * Fix tests * Improve optimaziation * Fix test * Fix test * Detect file encoding with reader * Improve optimaziation * reduce memory usage * improve code * fix build * Fix test * Fix for go1.15 * Fix render * Fix comment * Fix lint * Fix test * Don't use NormalEOF when unnecessary * revert change on util.go * Apply suggestions from code review Co-authored-by: zeripath * rename function * Take NormalEOF back Co-authored-by: zeripath --- models/issue_comment.go | 10 ++++++++-- models/repo.go | 5 ++++- models/repo_generate.go | 9 +++++---- 3 files changed, 17 insertions(+), 7 deletions(-) (limited to 'models') diff --git a/models/issue_comment.go b/models/issue_comment.go index 53d4d638c4..26bf122dc9 100644 --- a/models/issue_comment.go +++ b/models/issue_comment.go @@ -16,6 +16,7 @@ import ( "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/references" "code.gitea.io/gitea/modules/structs" @@ -1178,8 +1179,13 @@ func findCodeComments(e Engine, opts FindCommentsOptions, issue *Issue, currentU return nil, err } - comment.RenderedContent = string(markdown.Render([]byte(comment.Content), issue.Repo.Link(), - issue.Repo.ComposeMetas())) + var err error + if comment.RenderedContent, err = markdown.RenderString(&markup.RenderContext{ + URLPrefix: issue.Repo.Link(), + Metas: issue.Repo.ComposeMetas(), + }, comment.Content); err != nil { + return nil, err + } } return comments[:n], nil } diff --git a/models/repo.go b/models/repo.go index bdb84ee00d..fc673cace8 100644 --- a/models/repo.go +++ b/models/repo.go @@ -863,7 +863,10 @@ func (repo *Repository) getUsersWithAccessMode(e Engine, mode AccessMode) (_ []* // DescriptionHTML does special handles to description and return HTML string. func (repo *Repository) DescriptionHTML() template.HTML { - desc, err := markup.RenderDescriptionHTML([]byte(repo.Description), repo.HTMLURL(), repo.ComposeMetas()) + desc, err := markup.RenderDescriptionHTML(&markup.RenderContext{ + URLPrefix: repo.HTMLURL(), + Metas: repo.ComposeMetas(), + }, repo.Description) if err != nil { log.Error("Failed to render description for %s (ID: %d): %v", repo.Name, repo.ID, err) return template.HTML(markup.Sanitize(repo.Description)) diff --git a/models/repo_generate.go b/models/repo_generate.go index b0016494c4..1cf73bc55e 100644 --- a/models/repo_generate.go +++ b/models/repo_generate.go @@ -5,13 +5,14 @@ package models import ( + "bufio" + "bytes" "strconv" "strings" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/storage" - "code.gitea.io/gitea/modules/util" "github.com/gobwas/glob" ) @@ -49,9 +50,9 @@ func (gt GiteaTemplate) Globs() []glob.Glob { } gt.globs = make([]glob.Glob, 0) - lines := strings.Split(string(util.NormalizeEOL(gt.Content)), "\n") - for _, line := range lines { - line = strings.TrimSpace(line) + scanner := bufio.NewScanner(bytes.NewReader(gt.Content)) + for scanner.Scan() { + line := strings.TrimSpace(scanner.Text()) if line == "" || strings.HasPrefix(line, "#") { continue } -- cgit v1.2.3