1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /*
- Package registry is an expirmental package to facillitate altering the otto runtime via import.
- This interface can change at any time.
- */
- package registry
- var registry []*Entry = make([]*Entry, 0)
- type Entry struct {
- active bool
- source func() string
- }
- func newEntry(source func() string) *Entry {
- return &Entry{
- active: true,
- source: source,
- }
- }
- func (self *Entry) Enable() {
- self.active = true
- }
- func (self *Entry) Disable() {
- self.active = false
- }
- func (self Entry) Source() string {
- return self.source()
- }
- func Apply(callback func(Entry)) {
- for _, entry := range registry {
- if !entry.active {
- continue
- }
- callback(*entry)
- }
- }
- func Register(source func() string) *Entry {
- entry := newEntry(source)
- registry = append(registry, entry)
- return entry
- }
|