soju/xirc/caps.go

37 lines
686 B
Go

package xirc
type CapRegistry struct {
Available map[string]string
Enabled map[string]struct{}
}
func NewCapRegistry() CapRegistry {
return CapRegistry{
Available: make(map[string]string),
Enabled: make(map[string]struct{}),
}
}
func (cr *CapRegistry) IsAvailable(name string) bool {
_, ok := cr.Available[name]
return ok
}
func (cr *CapRegistry) IsEnabled(name string) bool {
_, ok := cr.Enabled[name]
return ok
}
func (cr *CapRegistry) Del(name string) {
delete(cr.Available, name)
delete(cr.Enabled, name)
}
func (cr *CapRegistry) SetEnabled(name string, enabled bool) {
if enabled {
cr.Enabled[name] = struct{}{}
} else {
delete(cr.Enabled, name)
}
}