Module:Utils

local util = {}
function util.get_args(frame)
 local origArgs
 if frame == mw.getCurrentFrame() then
 -- We're being called via #invoke. If the invoking template passed any args, use
 -- them. Otherwise, use the args that were passed into the template.
 origArgs = frame:getParent().args
 for k, v in pairs(frame.args) do
 origArgs = frame.args
 break
 end
 else
 -- We're being called from another module or from the debug console, so assume
 -- the args are passed in directly.
 origArgs = frame
 end
 
 -- ParserFunctions considers the empty string to be false, so to preserve the previous 
 -- behavior of the template, change any empty arguments to nil, so Lua will consider
 -- them false too.
 local args = {}
 for k, v in pairs(origArgs) do
 if v ~= then
 -- parameter names should be case-insensitive
 if type(k) == 'string' then
 k = string.lower(k)
 end
 args[k] = v
 end
 end
 return args
end
function util.expandWikitext(wikitext)
 -- function to process wikitext, expanding templates, and return result
 return mw.getCurrentFrame():preprocess(wikitext)
end
function util.processArg(arg, default)
 -- function that replicates wiki template behaviour where nil and blank arguments are equivalent here
 if arg and arg ~= then
 return arg
 end
 return default or ''
end
function util.processArgLowered(arg, default)
 -- similar to processArg but returns lowered string
 local processed_arg = util.processArg(arg, default)
 if processed_arg then
 return string.lower(processed_arg)
 end
 return ''
end
return util