Module:WikiProjectBanner/shared

--- --             Shared functions for Module:WikiProjectBanner                -- ---

-- Lazily initialise modules that we don't always need. local mPortal, yesno

local p = {}

function p.maybeLoadData(page) local success, data = pcall(mw.loadData, page) if success then return data end end

function p.maybeRequire(page) local success, module = pcall(require, page) if success then return module end end

function p.makePortal(portal, options) options = options or {} mPortal = mPortal or require("Module:Portal") return mPortal._portal({ portal }, options) end

function p.isActiveRow(args, bannerData, cfg, rowCfg) yesno = yesno or require('Module:Yesno') if not rowCfg then return false elseif bannerData.isDemo then return true elseif rowCfg.params then for i, param in ipairs(rowCfg.params) do			local isSet = yesno(args[param], true) if isSet then return true elseif isSet == false then return false end end return false else local param = cfg.defaultParameters[key] return param and yesno(args[param]) or false end end

function p.substituteParams(msg, ...) return mw.message.newRawMessage(msg):params{...}:plain end

function p.fetchArgument(args, keys) local keysType = type(keys) if keysType == 'string' then return args[keys] elseif keysType == 'table' then for _, key in ipairs(keys) do			local val = args[key] if val ~= nil then return val end end end end

function p.makeWikilink(link, display) if display then return string.format('%s', link, display) else return string.format('%s', link) end end

return p