diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2024-11-24 16:18:57 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-24 16:18:57 +0800 |
commit | 633785a5f3fe00789a6cba7cc0db1333de1e9c52 (patch) | |
tree | 2a2703ee9ed41c9caa508bd72c3fb5b52716af16 /services | |
parent | fa175c16949f09757ae85db6697cec327c44cba9 (diff) | |
download | gitea-633785a5f3fe00789a6cba7cc0db1333de1e9c52.tar.gz gitea-633785a5f3fe00789a6cba7cc0db1333de1e9c52.zip |
Refactor markup render system (#32612)
This PR removes (almost) all path tricks, and introduces "renderhelper"
package.
Now we can clearly see the rendering behaviors for comment/file/wiki,
more details are in "renderhelper" tests.
Fix #31411 , fix #18592, fix #25632 and maybe more problems. (ps: fix
#32608 by the way)
Diffstat (limited to 'services')
-rw-r--r-- | services/mailer/mail.go | 8 | ||||
-rw-r--r-- | services/mailer/mail_release.go | 8 | ||||
-rw-r--r-- | services/mailer/mail_test.go | 2 | ||||
-rw-r--r-- | services/markup/processorhelper.go | 6 |
4 files changed, 9 insertions, 15 deletions
diff --git a/services/mailer/mail.go b/services/mailer/mail.go index 162e497dc0..8eee32a8c6 100644 --- a/services/mailer/mail.go +++ b/services/mailer/mail.go @@ -18,12 +18,12 @@ import ( activities_model "code.gitea.io/gitea/models/activities" issues_model "code.gitea.io/gitea/models/issues" + "code.gitea.io/gitea/models/renderhelper" repo_model "code.gitea.io/gitea/models/repo" user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/emoji" "code.gitea.io/gitea/modules/log" - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/timeutil" @@ -219,10 +219,8 @@ func composeIssueCommentMessages(ctx *mailCommentContext, lang string, recipient } // This is the body of the new issue or comment, not the mail body - body, err := markdown.RenderString(markup.NewRenderContext(ctx). - WithRepoFacade(ctx.Issue.Repo). - WithLinks(markup.Links{AbsolutePrefix: true, Base: ctx.Issue.Repo.HTMLURL()}). - WithMetas(ctx.Issue.Repo.ComposeMetas(ctx)), + rctx := renderhelper.NewRenderContextRepoComment(ctx.Context, ctx.Issue.Repo).WithUseAbsoluteLink(true) + body, err := markdown.RenderString(rctx, ctx.Content) if err != nil { return nil, err diff --git a/services/mailer/mail_release.go b/services/mailer/mail_release.go index 3298c2273a..af1a7a2662 100644 --- a/services/mailer/mail_release.go +++ b/services/mailer/mail_release.go @@ -7,11 +7,11 @@ import ( "bytes" "context" + "code.gitea.io/gitea/models/renderhelper" repo_model "code.gitea.io/gitea/models/repo" user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/log" - "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/translation" @@ -56,10 +56,8 @@ func mailNewRelease(ctx context.Context, lang string, tos []*user_model.User, re locale := translation.NewLocale(lang) var err error - rel.RenderedNote, err = markdown.RenderString(markup.NewRenderContext(ctx). - WithRepoFacade(rel.Repo). - WithLinks(markup.Links{Base: rel.Repo.HTMLURL()}). - WithMetas(rel.Repo.ComposeMetas(ctx)), + rctx := renderhelper.NewRenderContextRepoComment(ctx, rel.Repo).WithUseAbsoluteLink(true) + rel.RenderedNote, err = markdown.RenderString(rctx, rel.Note) if err != nil { log.Error("markdown.RenderString(%d): %v", rel.RepoID, err) diff --git a/services/mailer/mail_test.go b/services/mailer/mail_test.go index 40fd21dea5..663ffa85ef 100644 --- a/services/mailer/mail_test.go +++ b/services/mailer/mail_test.go @@ -70,7 +70,7 @@ func prepareMailerTest(t *testing.T) (doer *user_model.User, repo *repo_model.Re func TestComposeIssueCommentMessage(t *testing.T) { doer, _, issue, comment := prepareMailerTest(t) - markup.Init(&markup.ProcessorHelper{ + markup.Init(&markup.RenderHelperFuncs{ IsUsernameMentionable: func(ctx context.Context, username string) bool { return username == doer.Name }, diff --git a/services/markup/processorhelper.go b/services/markup/processorhelper.go index 68487fb8db..1f1abf496a 100644 --- a/services/markup/processorhelper.go +++ b/services/markup/processorhelper.go @@ -11,10 +11,8 @@ import ( gitea_context "code.gitea.io/gitea/services/context" ) -func ProcessorHelper() *markup.ProcessorHelper { - return &markup.ProcessorHelper{ - ElementDir: "auto", // set dir="auto" for necessary (eg: <p>, <h?>, etc) tags - +func ProcessorHelper() *markup.RenderHelperFuncs { + return &markup.RenderHelperFuncs{ RenderRepoFileCodePreview: renderRepoFileCodePreview, IsUsernameMentionable: func(ctx context.Context, username string) bool { mentionedUser, err := user.GetUserByName(ctx, username) |