Module:Arguments: Difference between revisions

Jump to navigation Jump to search
m>Mr. Stradivarius
create argument-processing module
 
m>Mr. Stradivarius
return a table rather than a function, improve the comments
Line 1: Line 1:
-- This module provides easy processing of arguments passed to Scribunto from #invoke.
-- This module provides easy processing of arguments passed to Scribunto from #invoke.
-- It is intended for use by other Lua modules, and should not be called from #invoke directly.


local function getArguments(frame, options)
local arguments = {}
 
function arguments.getArgs(frame, options)
options = type(options) == 'table' and options or {}
options = type(options) == 'table' and options or {}


-- Get the arguments from the frame object if available. If the frame object is not available, we are being called
-- from another Lua module or from the debug console, so assume arguments are passed directly in.
local fargs, pargs
local fargs, pargs
if frame == mw.getCurrentFrame() then
if frame == mw.getCurrentFrame() then
Line 31: Line 36:
end
end


-- Use a user-generated functions to tidy the values if specified.
local valueFunc = options.valueFunc
local valueFunc = options.valueFunc
if valueFunc then
if valueFunc then
Line 54: Line 60:
end
end


-- Set the order of precedence of frame args and parent args.
local firstArgs, secondArgs = fargs, pargs
local firstArgs, secondArgs = fargs, pargs
if options.parentFirst then
if options.parentFirst then
Line 59: Line 66:
end
end


-- Define metatable behaviour.
metatable.__index = function (t, key)
metatable.__index = function (t, key)
local val = metaArgs[key]
local val = metaArgs[key]
Line 99: Line 107:
end
end


return getArguments
return arguments