From 8188176b588264fe0ff8e3f82a623ea007a1af41 Mon Sep 17 00:00:00 2001 From: silverwind Date: Sun, 12 Jul 2020 11:10:56 +0200 Subject: Direct SVG rendering (#12157) Introduce 'make svg' which calls a node script that compiles svg files to `public/img/svg`. These files are vendored to not create a dependency on Node for the backend build. On the frontend side, configure webpack using `raw-loader` so SVGs can be imported as string. Also moved our existing SVGs to web_src/svg for consistency. Fixes: https://github.com/go-gitea/gitea/issues/11618 --- modules/templates/helper.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'modules/templates/helper.go') diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 5001963e90..bb60db541c 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -30,6 +30,7 @@ import ( "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/svg" "code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/services/gitdiff" @@ -439,9 +440,19 @@ func NewTextFuncMap() []texttmpl.FuncMap { }} } +var widthRe = regexp.MustCompile(`width="[0-9]+?"`) +var heightRe = regexp.MustCompile(`height="[0-9]+?"`) + // SVG render icons func SVG(icon string, size int) template.HTML { - return template.HTML(fmt.Sprintf(``, icon, size, size, icon)) + if svgStr, ok := svg.SVGs[icon]; ok { + if size != 16 { + svgStr = widthRe.ReplaceAllString(svgStr, fmt.Sprintf(`width="%d"`, size)) + svgStr = heightRe.ReplaceAllString(svgStr, fmt.Sprintf(`height="%d"`, size)) + } + return template.HTML(svgStr) + } + return template.HTML("") } // Safe render raw as HTML -- cgit v1.2.3