hugo-cms/providers/themes/provider.go

34 lines
654 B
Go
Raw Permalink Normal View History

2025-01-26 22:26:15 +00:00
package themes
2025-02-01 22:54:30 +00:00
import (
"lmika.dev/lmika/hugo-cms/models"
"lmika.dev/pkg/modash/momap"
"slices"
"sort"
)
2025-01-26 22:26:15 +00:00
2025-02-01 22:54:30 +00:00
type Provider struct {
themes []models.ThemeMeta
themeIndex map[string]models.ThemeMeta
}
2025-01-26 22:26:15 +00:00
func New() *Provider {
2025-02-01 22:54:30 +00:00
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
2025-01-26 22:26:15 +00:00
}
func (p *Provider) Lookup(name string) (models.ThemeMeta, bool) {
2025-02-01 22:54:30 +00:00
t, ok := p.themeIndex[name]
2025-01-26 22:26:15 +00:00
return t, ok
}