diff --git a/builder_suite_test.go b/builder_suite_test.go index 1c03211..64dc75d 100644 --- a/builder_suite_test.go +++ b/builder_suite_test.go @@ -53,6 +53,9 @@ var _ = Describe("Builder", func() { {{.RenderedPage}} + + {{range $doc := iterDocs "posts/" 3}} + {{end}} `) diff --git a/render.go b/render.go index b8d06e4..bf04c4f 100644 --- a/render.go +++ b/render.go @@ -20,7 +20,6 @@ import ( "github.com/microcosm-cc/bluemonday" cp "github.com/otiai10/copy" "github.com/sabloger/sitemap-generator/smg" - "github.com/samber/lo" "github.com/tdewolff/minify" mHTML "github.com/tdewolff/minify/html" "github.com/yuin/goldmark" @@ -104,11 +103,6 @@ func (r *Render) Execute( return fmt.Errorf("could not read layout: %w", err) } - layout, err := template.New(r.layoutPath).Parse(contents) - if err != nil { - return fmt.Errorf("could not parse layout template (%s): %w", r.layoutPath, err) - } - funcMap := template.FuncMap{ "iterDocs": func(path string, limit int) (Docs, error) { pattern := filepath.Join(r.sourcePath, path, "*.md") @@ -121,6 +115,15 @@ func (r *Render) Execute( }, } + layout, err := template. + New(r.layoutPath). + Funcs(funcMap). + Funcs(sprig.FuncMap()). + Parse(contents) + if err != nil { + return fmt.Errorf("could not parse layout template (%s): %w", r.layoutPath, err) + } + maxRenders := 10 group := &errgroup.Group{} @@ -316,12 +319,12 @@ func (r *Render) renderDocument(doc *Doc, funcMap template.FuncMap, layout *temp layoutWriter := &bytes.Buffer{} - err = layout.Execute(layoutWriter, lo.Assign( - funcMap, + err = layout.Execute(layoutWriter, map[string]any{ "Doc": doc, "RenderedPage": renderedMarkdown, - })) + }, + ) if err != nil { return fmt.Errorf("could not render layout template (%s): %w", doc.Filename(), err) }