diff options
author | Steven Barth <steven@midlink.org> | 2008-10-30 19:09:52 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-10-30 19:09:52 +0000 |
commit | 2d4f21e9552eb5bc7fed66628ed12610c4cc8f2b (patch) | |
tree | 2ccce420688648146079b39496074b1c46e2e795 /libs | |
parent | 3f66d4e5fce2ac8105d361c2161fb555624c092b (diff) |
Fix rewrite and alias functions
Diffstat (limited to 'libs')
-rw-r--r-- | libs/web/luasrc/dispatcher.lua | 26 |
1 files 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 |