Module:LuaCall: Difference between revisions

From Test Wiki
Content deleted Content added
p.get() fix bug
p.get() fix bug
Line 148: Line 148:
--]]
--]]
function p.get(frame)
function p.get(frame)
local argsIpairs1, argsIpairs2, argsIpairs3
-- #frame.args always return 0, regardless of number of unnamed
-- #frame.args always return 0, regardless of number of unnamed
-- template parameters, so use length() instead
-- template parameters, so use length() instead
Line 155: Line 154:
-- always treat it as string,
-- always treat it as string,
-- so 'obj.1' will mean obj['1'] rather obj[1]
-- so 'obj.1' will mean obj['1'] rather obj[1]
argsIpairs1, argsIpairs2, argsIpairs3 = mw.text.gsplit(
local G = _G; for _ in mw.text.gsplit(
mw.text.trim(frame.args[1], '%s'), '%s*%.%s*'
mw.text.trim(frame.args[1], '%s'), '%s*%.%s*'
)
) do
G = G[_]
end
return G
else
else
local args = {}
local args = {}
Line 163: Line 165:
table.insert(args, tonumber(v) or v:gsub("^\\", "", 1))
table.insert(args, tonumber(v) or v:gsub("^\\", "", 1))
end
end
argsIpairs1, argsIpairs2, argsIpairs3 = ipairs(args)
local G = _G; for _, v in ipairs(args) do
G = G[v]
end
end
local G = _G; for _ in argsIpairs1, argsIpairs2, argsIpairs3 do
G = G[_]
return G
end
end
return G
end
end