weiro/providers/sitebuilder/tmplfns.go

39 lines
783 B
Go

package sitebuilder
import (
"html/template"
"net/url"
"strings"
"time"
"lmika.dev/lmika/weiro/models/pubmodel"
)
func templateFns(site pubmodel.Site, opts Options) template.FuncMap {
return template.FuncMap{
"url_abs": func(basePath string) (string, error) {
if site.BaseURL == "" {
return basePath, nil
}
pu, err := url.Parse(site.BaseURL)
if err != nil {
return "", err
}
pu.Path = joinPath(pu.Path, basePath)
return pu.String(), nil
},
"format_date": func(date time.Time) string {
loc := opts.RenderTZ
if loc == nil {
loc = time.Local
}
return date.In(loc).Format("02 Jan 2006")
},
}
}
func joinPath(basePath, path string) string {
return strings.TrimSuffix(basePath, "/") + "/" + strings.TrimPrefix(path, "/")
}