summaryrefslogtreecommitdiffhomepage
path: root/libs
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-10-30 19:09:52 +0000
committerSteven Barth <steven@midlink.org>2008-10-30 19:09:52 +0000
commit2d4f21e9552eb5bc7fed66628ed12610c4cc8f2b (patch)
tree2ccce420688648146079b39496074b1c46e2e795 /libs
parent3f66d4e5fce2ac8105d361c2161fb555624c092b (diff)
Fix rewrite and alias functions
Diffstat (limited to 'libs')
-rw-r--r--libs/web/luasrc/dispatcher.lua26
1 files changed, 18 insertions, 8 deletions
diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua
index d58987a3f2..9025529d71 100644
--- a/libs/web/luasrc/dispatcher.lua
+++ b/libs/web/luasrc/dispatcher.lua
@@ -440,8 +440,12 @@ end
--- Create a redirect to another dispatching node.
-- @param ... Virtual path destination
function alias(...)
- local req = arg
- return function()
+ local req = {...}
+ return function(...)
+ for _, r in ipairs({...}) do
+ req[#req+1] = r
+ end
+
dispatch(req)
end
end
@@ -450,17 +454,23 @@ end
-- @param n Number of path values to replace
-- @param ... Virtual path to replace removed path values with
function rewrite(n, ...)
- local req = arg
- return function()
+ local req = {...}
+ return function(...)
+ local dispatched = util.clone(context.dispatched)
+
for i=1,n do
- table.remove(context.path, 1)
+ table.remove(dispatched, 1)
+ end
+
+ for i, r in ipairs(req) do
+ table.insert(dispatched, i, r)
end
- for i,r in ipairs(req) do
- table.insert(context.path, i, r)
+ for _, r in ipairs({...}) do
+ dispatched[#dispatched+1] = r
end
- dispatch()
+ dispatch(dispatched)
end
end