summaryrefslogtreecommitdiff
path: root/web/app.lua
diff options
context:
space:
mode:
Diffstat (limited to 'web/app.lua')
-rw-r--r--web/app.lua19
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