From: Steven Barth Date: Thu, 30 Oct 2008 19:12:35 +0000 (+0000) Subject: Fix rewrite and alias functions X-Git-Tag: 0.8.2~62 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=9c9c78be102cfb04842cb59555b374ead9aa33ce;p=project%2Fluci.git Fix rewrite and alias functions --- 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