From 51b1219003acaaa515f5b105476c35a4d011f32b Mon Sep 17 00:00:00 2001 From: TorchedSammy <38820196+TorchedSammy@users.noreply.github.com> Date: Sat, 4 Dec 2021 17:59:19 -0400 Subject: [PATCH] feat(bait): add catchOnce function --- golibs/bait/bait.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/golibs/bait/bait.go b/golibs/bait/bait.go index 357a4d1..81387c1 100644 --- a/golibs/bait/bait.go +++ b/golibs/bait/bait.go @@ -38,6 +38,7 @@ failed, etc. To find all available hooks, see doc hooks.`) L.SetField(mod, "throw", luar.New(L, b.bthrow)) L.SetField(mod, "catch", luar.New(L, b.bcatch)) + L.SetField(mod, "catchOnce", luar.New(L, b.bcatchOnce)) L.Push(mod) @@ -55,3 +56,9 @@ func (b *Bait) bthrow(name string, args ...interface{}) { func (b *Bait) bcatch(name string, catcher func(...interface{})) { b.Em.On(name, catcher) } + +// catchOnce(name, cb) +// Same as catch, but only runs the `cb` once and then removes the hook +func (b *Bait) bcatchOnce(name string, catcher func(...interface{})) { + b.Em.Once(name, catcher) +}