Module:Portal-inline
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