Module:Arguments/sandbox: Difference between revisions

Content deleted Content added
add some more comments
add comments explaining the wrapper option's functionality
(7 intermediate revisions by 2 users not shown)
Line 55:
 
--[[
-- Get the argumentsargument fromtables. theIf framewe objectwere ifpassed available.a If thevalid frame object, get the
-- frame arguments (fargs) and the parent frame arguments (pargs), depending
-- is not available, we are being called from another Lua module or from the
-- debugon console,the sooptions assignset theand argson tothe aparent newframe's variableavailability. soIf we canweren't
-- ispassed nota availablevalid frame object, we are being called from another Lua module or from the
-- differentiate them.
-- or from the debug console, so assume that we were passed a table of args
-- directly, and assign it to a new variable (luaArgs).
--]]
local fargs, pargs, luaArgs
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
if not options.parentOnlywrappers then
--[[
fargs = frame.args
-- The wrappers option makes Module:Arguments look up arguments in
end
-- either the frame argument table or the parent argument table, but
if not options.frameOnly then
-- not both. This means that users can use either the #invoke syntax
pargs = frame:getParent().args
-- or a wrapper template without the loss of performance associated
end
-- with looking arguments up in both the frame and the parent frame.
if options.parentFirst then
-- Module:Arguments will look up arguments in the parent frame
fargs, pargs = pargs, fargs
-- if it finds the parent frame's title in options.wrapper;
-- otherwise it will look up arguments in the frame object passed
-- to getArgs.
--]]
pargslocal parent = frame:getParent().args
if not parent then
fargs = frame.args
else
local title = parent:getTitle():gsub('/sandbox$', '')
local found = false
if type(options.wrappers) == 'table' then
for _,v in pairs(options.wrappers) do
if v == title then
found = true
break
end
end
elseif options.wrappers == title then
found = true
end
if found then
pargs = parent.args
else
fargs = frame.args
end
end
else
-- options.wrapper isn't set, so check the other options.
if not options.parentOnly then
fargs = frame.args
end
if not options.frameOnly then
local parent = frame:getParent()
pargs = parent and parent.args or nil
end
if options.parentFirst then
fargs, pargs = pargs, fargs
end
end
else
Line 212 ⟶ 252:
--]]
metaArgs[key] = nil
nilArgs[key] = true -- Memoize nils.
else
metaArgs[key] = val