1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-08-11 17:51:01 +00:00

refactor(template): make use of template.ParseFS

This commit is contained in:
Julien Voisin 2025-08-06 05:07:49 +02:00 committed by GitHub
parent b3fce752d2
commit 2565ff930c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 14 additions and 42 deletions

View file

@ -8,7 +8,6 @@ import (
"embed"
"html/template"
"log/slog"
"strings"
"time"
"miniflux.app/v2/internal/locale"
@ -41,60 +40,31 @@ func NewEngine(router *mux.Router) *Engine {
// ParseTemplates parses template files embed into the application.
func (e *Engine) ParseTemplates() error {
var commonTemplateContents strings.Builder
funcMap := e.funcMap.Map()
commonTemplates := template.Must(template.New("").Funcs(funcMap).ParseFS(commonTemplateFiles, "templates/common/*.html"))
dirEntries, err := commonTemplateFiles.ReadDir("templates/common")
dirEntries, err := viewTemplateFiles.ReadDir("templates/views")
if err != nil {
return err
}
for _, dirEntry := range dirEntries {
fileData, err := commonTemplateFiles.ReadFile("templates/common/" + dirEntry.Name())
fullName := "templates/views/" + dirEntry.Name()
slog.Debug("Parsing template", slog.String("template_name", fullName))
commonTemplatesClone, err := commonTemplates.Clone()
if err != nil {
return err
panic("Unable to clone the common template")
}
commonTemplateContents.Write(fileData)
}
dirEntries, err = viewTemplateFiles.ReadDir("templates/views")
if err != nil {
return err
}
for _, dirEntry := range dirEntries {
templateName := dirEntry.Name()
fileData, err := viewTemplateFiles.ReadFile("templates/views/" + dirEntry.Name())
if err != nil {
return err
}
var templateContents strings.Builder
templateContents.WriteString(commonTemplateContents.String())
templateContents.Write(fileData)
slog.Debug("Parsing template",
slog.String("template_name", templateName),
)
e.templates[templateName] = template.Must(template.New("main").Funcs(e.funcMap.Map()).Parse(templateContents.String()))
e.templates[dirEntry.Name()] = template.Must(commonTemplatesClone.ParseFS(viewTemplateFiles, fullName))
}
dirEntries, err = standaloneTemplateFiles.ReadDir("templates/standalone")
if err != nil {
return err
}
for _, dirEntry := range dirEntries {
templateName := dirEntry.Name()
fileData, err := standaloneTemplateFiles.ReadFile("templates/standalone/" + dirEntry.Name())
if err != nil {
return err
}
slog.Debug("Parsing template",
slog.String("template_name", templateName),
)
e.templates[templateName] = template.Must(template.New("base").Funcs(e.funcMap.Map()).Parse(string(fileData)))
fullName := "templates/standalone/" + dirEntry.Name()
slog.Debug("Parsing template", slog.String("template_name", fullName))
e.templates[dirEntry.Name()] = template.Must(template.New(dirEntry.Name()).Funcs(funcMap).ParseFS(standaloneTemplateFiles, fullName))
}
return nil

View file

@ -1,3 +1,4 @@
{{ define "base" }}
<!DOCTYPE html>
<html>
<head>
@ -11,4 +12,5 @@
<body>
<p>{{ t "page.offline.message" }} - <a href="{{ route "unread" }}">{{ t "page.offline.refresh_page" }}</a>.</p>
</body>
</html>
</html>
{{end}}