diff options
Diffstat (limited to 'web/app.lua')
| -rw-r--r-- | web/app.lua | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/web/app.lua b/web/app.lua new file mode 100644 index 0000000..9a7e24b --- /dev/null +++ b/web/app.lua @@ -0,0 +1,19 @@ +local class = require'r.class' + +local App = class() +function App.make(cls, fields) + fields.hooks = fields.hooks or { + pre_start = {}, + pre_req = {}, + post_req = {}} + return setmetatable(fields,cls) end +function App.add_hook(self,name,fn) + local lst = self.hooks[name] + assert(lst, 'unknown hook name') + local ix = name:match"^post" and 1 or #lst+1 + table.insert(lst, ix, fn) end +function App.run_hooks(self,name,...) + local lst = self.hooks[name] + assert(lst,'unknown hook name') + for i,f in ipairs(lst) do f(...) end end +return App |
