aboutsummaryrefslogtreecommitdiff
path: root/resources.go
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2025-03-07 20:59:37 +0800
committerRunxi Yu <me@runxiyu.org>2025-03-07 21:03:59 +0800
commitea0a7f238d933d20718cbc3544962358aa4645b1 (patch)
tree06bf3aad217cc755908def0d597f79786914547c /resources.go
parentcss: Don't bold table headers unless it's a .title-row (diff)
downloadforge-ea0a7f238d933d20718cbc3544962358aa4645b1.tar.gz
forge-ea0a7f238d933d20718cbc3544962358aa4645b1.tar.zst
forge-ea0a7f238d933d20718cbc3544962358aa4645b1.zip
http/templates: Minify templates
Diffstat (limited to 'resources.go')
-rw-r--r--resources.go33
1 files changed, 31 insertions, 2 deletions
diff --git a/resources.go b/resources.go
index 7ada53f..a25ddd6 100644
--- a/resources.go
+++ b/resources.go
@@ -8,6 +8,9 @@ import (
"html/template"
"io/fs"
"net/http"
+
+ "github.com/tdewolff/minify/v2"
+ "github.com/tdewolff/minify/v2/html"
)
// We embed all source for easy AGPL compliance.
@@ -33,12 +36,38 @@ var resources_fs embed.FS
var templates *template.Template
func load_templates() (err error) {
- templates, err = template.New("templates").Funcs(template.FuncMap{
+ m := minify.New()
+ m.Add("text/html", &html.Minifier{ TemplateDelims: [2]string{"{{", "}}"}, KeepDefaultAttrVals: true })
+
+ templates = template.New("templates").Funcs(template.FuncMap{
"first_line": first_line,
"base_name": base_name,
"path_escape": path_escape,
"query_escape": query_escape,
- }).ParseFS(resources_fs, "templates/*")
+ })
+
+ err = fs.WalkDir(resources_fs, "templates", func(path string, d fs.DirEntry, err error) error {
+ if err != nil {
+ return err
+ }
+ if !d.IsDir() {
+ content, err := fs.ReadFile(resources_fs, path)
+ if err != nil {
+ return err
+ }
+
+ minified, err := m.Bytes("text/html", content)
+ if err != nil {
+ return err
+ }
+
+ _, err = templates.Parse(string(minified))
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+ })
return err
}