Module:Lua call and Module:Lua call/sandbox: Difference between pages
Appearance
(Difference between pages)
Content deleted Content added
HouseBlaster (talk | contribs) m HouseBlaster moved page Module:LuaCall to Module:Lua call: expand module name in the spirit of WP:TPN |
HouseBlaster (talk | contribs) m HouseBlaster moved page Module:LuaCall/sandbox to Module:Lua call/sandbox: expand module name in the spirit of WP:TPN |
||
Line 2: | Line 2: | ||
function p.main(frame) |
function p.main(frame) |
||
local parent |
local parent=frame.getParent(frame) or {} |
||
local reserved_value |
local reserved_value={} |
||
local reserved_function, |
local reserved_function,reserved_contents |
||
for k, |
for k,v in pairs(parent.args or {}) do |
||
_G[k] |
_G[k]=tonumber(v) or v -- transfer every parameter directly to the global variable table |
||
end |
end |
||
for k, |
for k,v in pairs(frame.args or {}) do |
||
_G[k] |
_G[k]=tonumber(v) or v -- transfer every parameter directly to the global variable table |
||
end |
end |
||
--- Alas Scribunto does NOT implement coroutines, according to |
--- Alas Scribunto does NOT implement coroutines, according to |
||
Line 15: | Line 15: | ||
--- this will not stop us from trying to implement one single lousy function call |
--- this will not stop us from trying to implement one single lousy function call |
||
if _G[1] then |
if _G[1] then |
||
reserved_function, |
reserved_function,reserved_contents=mw.ustring.match(_G[1],"^%s*(%a[^%s%(]*)%(([^%)]*)%)%s*$") |
||
end |
end |
||
if reserved_contents then |
if reserved_contents then |
||
local reserved_counter |
local reserved_counter=0 |
||
repeat |
repeat |
||
reserved_counter |
reserved_counter=reserved_counter+1 |
||
reserved_value[reserved_counter] |
reserved_value[reserved_counter]=_G[mw.ustring.match(reserved_contents,"([^%,]+)")] |
||
reserved_contents |
reserved_contents=mw.ustring.match(reserved_contents,"[^%,]+,(.*)$") |
||
until not reserved_contents |
until not reserved_contents |
||
end |
end |
||
local reserved_arraypart |
local reserved_arraypart=_G |
||
while mw.ustring.match(reserved_function, |
while mw.ustring.match(reserved_function,"%.") do |
||
reserved_functionpart, |
reserved_functionpart,reserved_function=mw.ustring.match(reserved_function,"^(%a[^%.]*)%.(.*)$") |
||
reserved_arraypart |
reserved_arraypart=reserved_arraypart[reserved_functionpart] |
||
end |
end |
||
local reserved_call |
local reserved_call=reserved_arraypart[reserved_function] |
||
if type(reserved_call) |
if type(reserved_call)~="function" then |
||
return tostring(reserved_call) |
return tostring(reserved_call) |
||
⚫ | |||
⚫ | |||
⚫ | |||
return reserved_output[reserved_return or 1] |
return reserved_output[reserved_return or 1] |
||
end |
end |
||
Line 153: | Line 152: | ||
pfargs[2], usedpargs[2] = pframe.args[2], true |
pfargs[2], usedpargs[2] = pframe.args[2], true |
||
end |
end |
||
⚫ | |||
elseif not pfargs[2] then |
|||
pfargs[2], usedpargs[1] = pframe.args[1], true |
if not pfargs[2] then |
||
pfargs[2], usedpargs[1] = pframe.args[1], true |
|||
end |
|||
end |
end |
||
-- repack sequential args |
-- repack sequential args |