Module:LuaCall: Difference between revisions
From Test Wiki
Content deleted Content added
Inlining single-use functions |
+p.invoke() |
||
| Line 40: | Line 40: | ||
local function tonumberOrString(v) |
local function tonumberOrString(v) |
||
return tonumber(v) or v:gsub("^\\", "", 1) |
return tonumber(v) or v:gsub("^\\", "", 1) |
||
| ⚫ | |||
local function callWithTonumberOrStringOnPairs(f, ...) |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
end |
|||
--[[ |
|||
------------------------------------------------------------------------------------ |
|||
-- ipairsAtOffset |
|||
-- This is an iterator for arrays. It can be used like ipairs, but with |
|||
-- specified i as first index to iterate. i is an offset from 1 |
|||
-- |
|||
------------------------------------------------------------------------------------ |
|||
--]] |
|||
local function ipairsAtOffset(t, i) |
|||
local f, s, i0 = ipairs(t) |
|||
return f, s, i0+i |
|||
end |
end |
||
| Line 74: | Line 96: | ||
--]] |
--]] |
||
function p.call(frame) |
function p.call(frame) |
||
return callWithTonumberOrStringOnPairs(get(frame.args[1]), |
|||
ipairsAtOffset(frame.args, 1) |
|||
| ⚫ | |||
) |
|||
| ⚫ | |||
if n > 1 then |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
end |
end |
||
--local TableTools = require('Module:TableTools') |
|||
--[[ |
--[[ |
||
------------------------------------------------------------------------------------ |
------------------------------------------------------------------------------------ |
||
| Line 113: | Line 131: | ||
return G |
return G |
||
end |
end |
||
end |
|||
--[[ |
|||
------------------------------------------------------------------------------------ |
|||
-- invoke |
|||
-- |
|||
------------------------------------------------------------------------------------ |
|||
--]] |
|||
function p.invoke(frame) |
|||
frame.args = frame:getParent().args |
|||
local func = require('Module:' .. frame.args[1])[frame.args[2]] |
|||
local args = {} |
|||
for _, v in ipairsAtOffset(frame.args, 2) do |
|||
table.insert(args, v) |
|||
end |
|||
frame.args = args |
|||
return func(frame) |
|||
end |
end |
||