diff --git a/postmap/postmap.go b/postmap/postmap.go index a7e0106..0657e06 100644 --- a/postmap/postmap.go +++ b/postmap/postmap.go @@ -13,6 +13,7 @@ import ( "strings" "sync" + "github.com/aymerick/raymond" "github.com/mitchellh/mapstructure" "github.com/yuin/goldmark" emoji "github.com/yuin/goldmark-emoji" @@ -39,6 +40,10 @@ type Post struct { Image []byte } +func (p *Post) Render(tpl *raymond.Template) (string, error) { + return tpl.Exec(p) +} + func (p *Post) String() string { return p.Slug } @@ -166,9 +171,7 @@ func (pl *postList) fetchLocked(filename string) error { if err != nil { return err } - defer func() { - slices.SortFunc(pl.posts, postLess) - }() + defer slices.SortFunc(pl.posts, postLess) for i, post := range pl.posts { if post.Slug == p.Slug { pl.posts[i] = p diff --git a/server/server.go b/server/server.go index c582d10..03ccfa0 100644 --- a/server/server.go +++ b/server/server.go @@ -95,7 +95,7 @@ func (s *server) serveGetPost(w http.ResponseWriter, r *http.Request) { } w.Header().Add("content-type", "text/html; charset=utf-8") tpl, _ := s.templates.Get("fullpost.html") - contents, err := tpl.Exec(p) + contents, err := p.Render(tpl) if err != nil { s.errorInRequest(w, r, err) return @@ -115,7 +115,7 @@ func (s *server) serveGetHome(w http.ResponseWriter, r *http.Request) { summaryTpl, _ := s.templates.Get("summary.html") for _, p := range s.posts.All() { - summary, err := summaryTpl.Exec(p) + summary, err := p.Render(summaryTpl) if err != nil { log.Printf("could not render post summary for %s", p.Slug) } @@ -163,7 +163,7 @@ func (s *server) serveGetRSS(w http.ResponseWriter, r *http.Request) { if pubDate != "" { pubDate = common.RSSDatetime(p.Metadata.Time) } - summary, err := rssItemTpl.Exec(p) + summary, err := p.Render(rssItemTpl) if err != nil { log.Printf("could not render post summary for %s", p.Slug) }