aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/robertkrimen/otto/registry/registry.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/robertkrimen/otto/registry/registry.go')
-rw-r--r--vendor/github.com/robertkrimen/otto/registry/registry.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/vendor/github.com/robertkrimen/otto/registry/registry.go b/vendor/github.com/robertkrimen/otto/registry/registry.go
new file mode 100644
index 000000000..966638ac4
--- /dev/null
+++ b/vendor/github.com/robertkrimen/otto/registry/registry.go
@@ -0,0 +1,47 @@
+/*
+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
+}