Module:LuaCall: Difference between revisions
From Test Wiki
Content deleted Content added
call() |
p.call() use ipairsAtOffset() |
||
| Line 58: | Line 58: | ||
return p |
return p |
||
end |
|||
-- ipairsAt()/ipairsAtOffset() is pending to be placed in [[Module:TableTools]] |
|||
--[[ |
|||
------------------------------------------------------------------------------------ |
|||
-- ipairsAt |
|||
-- |
|||
-- This is an iterator for arrays. It can be used like ipairs, but with |
|||
-- specified i as first index to iterate. |
|||
-- |
|||
-- for i,v in p.ipairsAt(t, 3) do body end |
|||
-- |
|||
-- will iterate over the pairs (3,t[3]),(4,t[4]),..., up to the first |
|||
-- integer key absent from the table. |
|||
-- |
|||
-- Note: The following is an example to do range iteration from 3 to j |
|||
-- |
|||
-- for i,v in p.ipairsAt(t, 3) do if i>j then break end; body end |
|||
-- |
|||
------------------------------------------------------------------------------------ |
|||
--]] |
|||
local function ipairsAt(t, i) |
|||
--return ipairsAtOffset(t, i-1) |
|||
-- This may be less overhead than return ipairsAtOffset() above |
|||
local f, s, i0 = ipairs(t) |
|||
return f, s, i0+i-1 |
|||
end |
|||
--[[ |
|||
------------------------------------------------------------------------------------ |
|||
-- ipairsAtOffset |
|||
-- |
|||
-- Like ipairsAt(), except that it treat argument i as offset from 1 |
|||
-- |
|||
------------------------------------------------------------------------------------ |
|||
--]] |
|||
local function ipairsAtOffset(t, i) |
|||
local f, s, i0 = ipairs(t) |
|||
return f, s, i0+i |
|||
end |
end |
||
| Line 64: | Line 103: | ||
local args = {} |
local args = {} |
||
local f = frame.args[1] |
local f = frame.args[1] |
||
for _, v in ipairsAtOffset(frame.args, 1) do |
|||
for _, v in iter,s,i+1 do |
|||
table.insert(args, tonumber(v) or v:gsub("^\\", "", 1)) |
table.insert(args, tonumber(v) or v:gsub("^\\", "", 1)) |
||
end |
end |
||