From: Steven Barth Date: Thu, 30 Oct 2008 19:09:52 +0000 (+0000) Subject: Fix rewrite and alias functions X-Git-Tag: 0.9.0~1044 X-Git-Url: https://git.archive.openwrt.org/?a=commitdiff_plain;h=2d4f21e9552eb5bc7fed66628ed12610c4cc8f2b;p=project%2Fluci.git Fix rewrite and alias functions --- 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