From faa5ca8fab23176d390e9522f1485d467851545b Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 6 Apr 2025 01:55:21 +0800 Subject: Move stuff into internal/unsorted --- internal/unsorted/resources.go | 56 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 internal/unsorted/resources.go (limited to 'internal/unsorted/resources.go') diff --git a/internal/unsorted/resources.go b/internal/unsorted/resources.go new file mode 100644 index 0000000..d09ee60 --- /dev/null +++ b/internal/unsorted/resources.go @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: AGPL-3.0-only +// SPDX-FileCopyrightText: Copyright (c) 2025 Runxi Yu + +package unsorted + +import ( + "html/template" + "io/fs" + + "github.com/tdewolff/minify/v2" + "github.com/tdewolff/minify/v2/html" + "go.lindenii.runxiyu.org/forge/internal/embed" + "go.lindenii.runxiyu.org/forge/internal/misc" +) + +// loadTemplates minifies and loads HTML templates. +func (s *Server) loadTemplates() (err error) { + minifier := minify.New() + minifierOptions := html.Minifier{ + TemplateDelims: [2]string{"{{", "}}"}, + KeepDefaultAttrVals: true, + } //exhaustruct:ignore + minifier.Add("text/html", &minifierOptions) + + s.templates = template.New("templates").Funcs(template.FuncMap{ + "first_line": misc.FirstLine, + "path_escape": misc.PathEscape, + "query_escape": misc.QueryEscape, + "dereference_error": misc.DereferenceOrZero[error], + "minus": misc.Minus, + }) + + err = fs.WalkDir(embed.Resources, "templates", func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + if !d.IsDir() { + content, err := fs.ReadFile(embed.Resources, path) + if err != nil { + return err + } + + minified, err := minifier.Bytes("text/html", content) + if err != nil { + return err + } + + _, err = s.templates.Parse(misc.BytesToString(minified)) + if err != nil { + return err + } + } + return nil + }) + return err +} -- cgit v1.2.3