Module:LuaCall: Difference between revisions

From Test Wiki
Content deleted Content added
use vararg for pairs() result
p.call() use callWithTonumberOrStringOnPairs()
Line 46: Line 46:
end
end


local function tonumberOrStringOnPairs(...)
--local function tonumberOrStringOnPairs(...)
-- local args = {}
-- for _, v in ... do
-- --table.insert(args, tonumber(v) or v:gsub("^\\", "", 1))
-- table.insert(args, tonumberOrString(v))
-- end
-- return args
--end

local function callWithTonumberOrStringOnPairs(f, ...)
local args = {}
local args = {}
for _, v in ... do
for _, v in ... do
Line 52: Line 61:
table.insert(args, tonumberOrString(v))
table.insert(args, tonumberOrString(v))
end
end
return args
return (f(unpack(args)))
end
end


Line 137: Line 146:
--]]
--]]
function p.call(frame)
function p.call(frame)
--local f = mw.text.trim(frame.args[1], '%s')
----local f = mw.text.trim(frame.args[1], '%s')
--local args = {}
----local args = {}
--for _, v in ipairsAtOffset(frame.args, 1) do
----for _, v in ipairsAtOffset(frame.args, 1) do
-- --table.insert(args, tonumber(v) or v:gsub("^\\", "", 1))
---- --table.insert(args, tonumber(v) or v:gsub("^\\", "", 1))
-- table.insert(args, tonumberOrString(v))
---- table.insert(args, tonumberOrString(v))
--end
----end
local args = tonumberOrStringOnPairs(ipairsAtOffset(frame.args, 1))
--local args = tonumberOrStringOnPairs(ipairsAtOffset(frame.args, 1))
--local G = _G
----local G = _G
--for _ in mw.text.gsplit(
----for _ in mw.text.gsplit(
-- mw.text.trim(frame.args[1], '%s'), '%s*%.%s*'
---- mw.text.trim(frame.args[1], '%s'), '%s*%.%s*'
--) do
----) do
-- G = G[_]
---- G = G[_]
--end
----end
return (get(frame.args[1])(unpack(args)))
--return (get(frame.args[1])(unpack(args)))
return callWithTonumberOrStringOnPairs(get(frame.args[1]),
ipairsAtOffset(frame.args, 1)
)
end
end