refactor: shorten ProvideRenderer to satisfy funlen
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user