From 9c9c78be102cfb04842cb59555b374ead9aa33ce Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Thu, 30 Oct 2008 19:12:35 +0000 Subject: [PATCH] Fix rewrite and alias functions --- libs/web/luasrc/dispatcher.lua | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua index d58987a3f..9025529d7 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 -- 2.25.1