Module:Portal-inline
From Asmbly Wiki
Documentation for this module may be created at Module:Portal-inline/doc
local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local portalModule = require('Module:Portal') local getImageName = portalModule.image local checkPortals = portalModule._checkPortals local processPortalArgs = portalModule._processPortalArgs local p = {} -- Function to format error message and tracking category -- Arguments: -- errMsg: string, or nil/false if no error -- trackingCat: string for tracking category (or empty string) local function formatError(errMsg, trackingCat) local result = trackingCat or '' if errMsg then local errTag = mw.html.create('span') errTag:addClass("error") errTag:css("font-size",'100%') errTag:wikitext("Error: "..errMsg) result = tostring(errTag)..result end return result end function p._main(portals, args) mw.logObject(args) -- Normalize all arguments if args.redlinks == 'include' then args.redlinks = true end for key, default in pairs({tracking=true,redlinks=false,short=false}) do if args[key] == nil then args[key] = default end args[key] = yesno(args[key], default) end local trackingCat = '' local errMsg = nil -- Check for existing categories, drop if not. -- Possible generate tracking category & error message if needed args.minPortals = args.minPortals or 1 args.maxPortals = args.maxPortals or 1 portals, trackingCat, errMsg = checkPortals(portals,args) -- use more specific tracking cat for inline portal trackingCat = mw.ustring.gsub(trackingCat,"Portal templates","Portal-inline template") -- either too many/few portals, or no portals left after filtering, then return if errMsg or #portals == 0 then return formatError(errMsg, trackingCat) end args.size = args.size == "tiny" and "16x16px" or "32x28px" local displayName = "" if not (args['text'] == "" or args['text'] == nil) then displayName = args['text'] elseif args.short then displayName = portals[1] else displayName = portals[1] .. " portal" end -- display portal-inline content local root = formatError(errMsg, trackingCat) root = string.format('[[File:%s|class=noviewer|%s]] [[Portal:%s|%s]]', getImageName{ portals[1] }, args['size'], portals[1], displayName)..root return tostring(root) end function p.main(frame) origArgs = getArgs(frame) portals, args = processPortalArgs(origArgs) return p._main(portals, args) end return p