summaryrefslogtreecommitdiffhomepage
path: root/libs
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-05-27 20:39:48 +0000
committerSteven Barth <steven@midlink.org>2008-05-27 20:39:48 +0000
commitb1e131a3db1b6ec2ceecb5df4a224f3de2735e6d (patch)
tree593175651871c9fcfaa4ee7c9fceeb8990b8147c /libs
parent3f09d369d679d3e4413849cf67f757c647a66965 (diff)
* Optimized dispatching model
Diffstat (limited to 'libs')
-rw-r--r--libs/web/luasrc/dispatcher.lua20
1 files changed, 12 insertions, 8 deletions
diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua
index 6a6bceb29..202e07332 100644
--- a/libs/web/luasrc/dispatcher.lua
+++ b/libs/web/luasrc/dispatcher.lua
@@ -137,7 +137,11 @@ function dispatch()
if c and type(c.target) == "function" then
dispatched = c
-
+ stat, mod = pcall(require, c.module)
+ if stat then
+ luci.util.updfenv(c.target, mod)
+ end
+
stat, err = pcall(c.target)
if not stat then
error500(err)
@@ -222,12 +226,7 @@ function createtree()
for k, v in pairs(index) do
luci.util.updfenv(v, _M)
-
- local stat, mod = pcall(require, k)
- if stat then
- luci.util.updfenv(v, mod)
- end
-
+ luci.util.extfenv(v, "_NAME", k)
pcall(v)
end
@@ -242,6 +241,7 @@ function entry(path, target, title, order, add)
c.target = target
c.title = title
c.order = order
+ c.module = getfenv(2)._NAME
for k,v in pairs(add) do
c[k] = v
@@ -260,7 +260,7 @@ function node(...)
for k,v in ipairs(arg) do
if not c.nodes[v] then
- c.nodes[v] = {nodes={}}
+ c.nodes[v] = {nodes={}, module=getfenv(2)._NAME}
end
c = c.nodes[v]
@@ -278,6 +278,10 @@ function alias(...)
end
end
+function call(name)
+ return function() getfenv()[name]() end
+end
+
function template(name)
require("luci.template")
return function() luci.template.render(name) end