···11-Hooks = class(function(self)
11+hooks = class(function(self)
22 self.events = {}
33end)
4455-function Hooks:on(event, callback)
55+function hooks:on(event, callback)
66 if not self.events[event] then
77 self.events[event] = {}
88 end
···1010 table.insert(self.events[event], callback)
1111end
12121313-function Hooks:once(event, callback)
1313+function hooks:once(event, callback)
1414 local wrapper
1515 wrapper = function(...)
1616 callback(...)
···2020 self:on(event, wrapper)
2121end
22222323-function Hooks:off(event, callback)
2323+function hooks:off(event, callback)
2424 local list = self.events[event]
2525 if not list then return end
2626 for i, cb in ipairs(list) do
···3131 end
3232end
33333434-function Hooks:emit(event, ...)
3434+function hooks:emit(event, ...)
3535 local list = self.events[event]
3636 if not list then return end
3737 for _, cb in ipairs(list) do
···3939 end
4040end
41414242+local Hooks = hooks()
4243return Hooks