59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package templates
|
|
|
|
import (
|
|
_ "embed"
|
|
"html/template"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
//go:embed "html/layout.html"
|
|
var layoutHTML string
|
|
//go:embed "html/index.html"
|
|
var indexHTML string
|
|
//go:embed "html/vod-list.html"
|
|
var vodListHTML string
|
|
//go:embed "html/vod.html"
|
|
var vodHTML string
|
|
|
|
type (
|
|
Crumb struct {
|
|
Name string
|
|
Path string
|
|
}
|
|
)
|
|
|
|
var templateFuncs = template.FuncMap{
|
|
"FormatTime": func (time time.Time, format string) string {
|
|
return time.Format(format)
|
|
},
|
|
"ToLower": func (str string) string {
|
|
return strings.ToLower(str)
|
|
},
|
|
"ToUpper": func (str string) string {
|
|
return strings.ToUpper(str)
|
|
},
|
|
"Crumbs": func (path string) []Crumb {
|
|
split := strings.Split(strings.TrimSuffix(path, "/"), "/")
|
|
crumbs := make([]Crumb, len(split))
|
|
for i := range crumbs {
|
|
segment := split[i]
|
|
crumbs[i] = Crumb{
|
|
segment,
|
|
strings.Repeat("../", len(crumbs)-i-1),
|
|
}
|
|
}
|
|
return crumbs
|
|
},
|
|
}
|
|
|
|
var BaseTemplate = template.Must(template.New("base").Funcs(templateFuncs).Parse(
|
|
strings.Join([]string{
|
|
layoutHTML,
|
|
// headerHTML,
|
|
// footerHTML,
|
|
}, "\n"),
|
|
))
|
|
var IndexTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(indexHTML))
|
|
var VODListTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(vodListHTML))
|
|
var VODTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(vodHTML))
|