summaryrefslogtreecommitdiffhomepage
path: root/libs/web/luasrc/dispatcher.lua
diff options
context:
space:
mode:
Diffstat (limited to 'libs/web/luasrc/dispatcher.lua')
-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