Use globally shared HTMLRender (#24436)

The old `HTMLRender` is not ideal.

1. It shouldn't be initialized multiple times, it consumes a lot of
memory and is slow.
2. It shouldn't depend on short-lived requests, the `WatchLocalChanges`
needs a long-running context.
3. It doesn't make sense to use FuncsMap slice.


HTMLRender was designed to only work for GItea's specialized 400+
templates, so it's good to make it a global shared instance.
This commit is contained in:
wxiaoguang 2023-04-30 20:22:23 +08:00 committed by GitHub
parent 8f4dafcd4e
commit e3750370df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 37 additions and 34 deletions

View file

@ -10,7 +10,6 @@ import (
"html"
"html/template"
"net/url"
"regexp"
"strings"
"time"
@ -26,12 +25,9 @@ import (
"code.gitea.io/gitea/services/gitdiff"
)
// Used from static.go && dynamic.go
var mailSubjectSplit = regexp.MustCompile(`(?m)^-{3,}[\s]*$`)
// NewFuncMap returns functions for injecting to templates
func NewFuncMap() []template.FuncMap {
return []template.FuncMap{map[string]interface{}{
func NewFuncMap() template.FuncMap {
return map[string]interface{}{
"DumpVar": dumpVar,
// -----------------------------------------------------------------
@ -192,7 +188,7 @@ func NewFuncMap() []template.FuncMap {
"FilenameIsImage": FilenameIsImage,
"TabSizeClass": TabSizeClass,
}}
}
}
// Safe render raw as HTML