Skip to content

Commit 3ecbc1b

Browse files
committed
split renderer
1 parent 256afbc commit 3ecbc1b

File tree

3 files changed

+48
-39
lines changed

3 files changed

+48
-39
lines changed

Diff for: modules/markup/render.go

+27
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ import (
2121
"github.com/yuin/goldmark/ast"
2222
)
2323

24+
type RenderMetaMode string
25+
26+
const (
27+
RenderMetaAsDetails RenderMetaMode = "details" // default
28+
RenderMetaAsNone RenderMetaMode = "none"
29+
RenderMetaAsTable RenderMetaMode = "table"
30+
)
31+
2432
// RenderContext represents a render context
2533
type RenderContext struct {
2634
Ctx context.Context
@@ -197,3 +205,22 @@ func renderFile(ctx *RenderContext, input io.Reader, output io.Writer) error {
197205
}
198206
return ErrUnsupportedRenderExtension{extension}
199207
}
208+
209+
// Init initializes the render global variables
210+
func Init(ph *ProcessorHelper) {
211+
if ph != nil {
212+
DefaultProcessorHelper = *ph
213+
}
214+
215+
if len(setting.Markdown.CustomURLSchemes) > 0 {
216+
CustomLinkURLSchemes(setting.Markdown.CustomURLSchemes)
217+
}
218+
219+
// since setting maybe changed extensions, this will reload all renderer extensions mapping
220+
extRenderers = make(map[string]Renderer)
221+
for _, renderer := range renderers {
222+
for _, ext := range renderer.Extensions() {
223+
extRenderers[strings.ToLower(ext)] = renderer
224+
}
225+
}
226+
}

Diff for: modules/markup/render_helper.go

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Copyright 2024 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
package markup
5+
6+
import (
7+
"context"
8+
"html/template"
9+
)
10+
11+
// ProcessorHelper is a helper for the rendering processors (it could be renamed to RenderHelper in the future).
12+
// The main purpose of this helper is to decouple some functions which are not directly available in this package.
13+
type ProcessorHelper struct {
14+
IsUsernameMentionable func(ctx context.Context, username string) bool
15+
16+
ElementDir string // the direction of the elements, eg: "ltr", "rtl", "auto", default to no direction attribute
17+
18+
RenderRepoFileCodePreview func(ctx context.Context, options RenderCodePreviewOptions) (template.HTML, error)
19+
}
20+
21+
var DefaultProcessorHelper ProcessorHelper

Diff for: modules/markup/renderer.go

-39
Original file line numberDiff line numberDiff line change
@@ -5,52 +5,13 @@ package markup
55

66
import (
77
"bytes"
8-
"context"
9-
"html/template"
108
"io"
119
"path"
1210
"strings"
1311

1412
"code.gitea.io/gitea/modules/setting"
1513
)
1614

17-
type RenderMetaMode string
18-
19-
const (
20-
RenderMetaAsDetails RenderMetaMode = "details" // default
21-
RenderMetaAsNone RenderMetaMode = "none"
22-
RenderMetaAsTable RenderMetaMode = "table"
23-
)
24-
25-
type ProcessorHelper struct {
26-
IsUsernameMentionable func(ctx context.Context, username string) bool
27-
28-
ElementDir string // the direction of the elements, eg: "ltr", "rtl", "auto", default to no direction attribute
29-
30-
RenderRepoFileCodePreview func(ctx context.Context, options RenderCodePreviewOptions) (template.HTML, error)
31-
}
32-
33-
var DefaultProcessorHelper ProcessorHelper
34-
35-
// Init initializes the render global variables
36-
func Init(ph *ProcessorHelper) {
37-
if ph != nil {
38-
DefaultProcessorHelper = *ph
39-
}
40-
41-
if len(setting.Markdown.CustomURLSchemes) > 0 {
42-
CustomLinkURLSchemes(setting.Markdown.CustomURLSchemes)
43-
}
44-
45-
// since setting maybe changed extensions, this will reload all renderer extensions mapping
46-
extRenderers = make(map[string]Renderer)
47-
for _, renderer := range renderers {
48-
for _, ext := range renderer.Extensions() {
49-
extRenderers[strings.ToLower(ext)] = renderer
50-
}
51-
}
52-
}
53-
5415
// Renderer defines an interface for rendering markup file to HTML
5516
type Renderer interface {
5617
Name() string // markup format name

0 commit comments

Comments
 (0)