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 }