hugo-cms/providers/themes/provider.go
2025-02-02 09:54:30 +11:00

34 lines
654 B
Go

package themes
import (
"lmika.dev/lmika/hugo-cms/models"
"lmika.dev/pkg/modash/momap"
"slices"
"sort"
)
type Provider struct {
themes []models.ThemeMeta
themeIndex map[string]models.ThemeMeta
}
func New() *Provider {
ts := slices.Clone(themes)
sort.Slice(ts, func(i, j int) bool { return ts[i].Name < ts[j].Name })
ti := momap.IndexSlice(themes, func(m models.ThemeMeta) string { return m.ID })
return &Provider{
themes: ts,
themeIndex: ti,
}
}
func (p *Provider) Themes() []models.ThemeMeta {
return p.themes
}
func (p *Provider) Lookup(name string) (models.ThemeMeta, bool) {
t, ok := p.themeIndex[name]
return t, ok
}