refactor: shorten ProvideRenderer to satisfy funlen

This commit is contained in:
2026-06-11 14:26:35 +02:00
parent 1c86f802b4
commit b0769ddce7

View File

@@ -26,7 +26,25 @@ var Module = fx.Options(
) )
func ProvideRenderer() (*Renderer, error) { func ProvideRenderer() (*Renderer, error) {
funcs := template.FuncMap{ pages, components, err := templatePaths()
if err != nil {
return nil, err
}
r, err := parseTemplates(pages, components, rendererFuncs())
if err != nil {
return nil, err
}
if len(r.templates) == 0 {
return nil, errors.New("no templates parsed")
}
return r, nil
}
func rendererFuncs() template.FuncMap {
return template.FuncMap{
"dict": dict, "dict": dict,
"list": func(items ...any) []any { return items }, "list": func(items ...any) []any { return items },
"json": jsonAttr, "json": jsonAttr,
@@ -52,25 +70,32 @@ func ProvideRenderer() (*Renderer, error) {
"posterURL": posterURL, "posterURL": posterURL,
"episodeRangeStart": episodeRangeStart, "episodeRangeStart": episodeRangeStart,
} }
}
func templatePaths() ([]string, []string, error) {
pages, err := fs.Glob(templateFS, "*.gohtml") pages, err := fs.Glob(templateFS, "*.gohtml")
if err != nil { if err != nil {
return nil, fmt.Errorf("glob templates: %w", err) return nil, nil, fmt.Errorf("glob templates: %w", err)
} }
subpages, err := fs.Glob(templateFS, "anime/*.gohtml") subpages, err := fs.Glob(templateFS, "anime/*.gohtml")
if err != nil { if err != nil {
return nil, fmt.Errorf("glob anime templates: %w", err) return nil, nil, fmt.Errorf("glob anime templates: %w", err)
} }
components, err := fs.Glob(templateFS, "components/*.gohtml") components, err := fs.Glob(templateFS, "components/*.gohtml")
if err != nil { if err != nil {
return nil, fmt.Errorf("glob components: %w", err) return nil, nil, fmt.Errorf("glob components: %w", err)
} }
basePath := "base.gohtml" return append(pages, subpages...), components, nil
allPages := append(pages, subpages...) }
r := &Renderer{templates: make(map[string]*template.Template, len(allPages))} func parseTemplates(pages []string, components []string, funcs template.FuncMap) (*Renderer, error) {
for _, page := range allPages { const basePath = "base.gohtml"
r := &Renderer{templates: make(map[string]*template.Template, len(pages))}
for _, page := range pages {
name := path.Base(page) name := path.Base(page)
if name == path.Base(basePath) { if name == path.Base(basePath) {
continue continue
@@ -86,11 +111,8 @@ func ProvideRenderer() (*Renderer, error) {
if err != nil { if err != nil {
return nil, fmt.Errorf("parse template %s: %w", name, err) return nil, fmt.Errorf("parse template %s: %w", name, err)
} }
r.templates[name] = parsed
}
if len(r.templates) == 0 { r.templates[name] = parsed
return nil, errors.New("no templates parsed")
} }
return r, nil return r, nil