package templates import ( _ "embed" "html/template" "mime/multipart" "strconv" "strings" "sync" "github.com/rs/zerolog/log" ) var funcMap = template.FuncMap{ "year": func(s int) string { if s == 0 { return "" } return strconv.Itoa(s) }, "join": func(s []string) string { if len(s) == 0 { return "" } else { return strings.Join(s, ",") } }, "filename": func(h *multipart.FileHeader) string { if h != nil { return h.Filename } return "" }, } //go:embed form.html.tpl var form string var GetUploadForm = sync.OnceValue[*template.Template](func() *template.Template { tmpl, err := template.New("uploadForm").Funcs(funcMap).Parse(form) if err != nil { log.Err(err).Msg("unable to parse upload form") return nil } return tmpl })