Module:Portal-inline: Difference between revisions
Jump to navigation
Jump to search
m 1 revision imported |
imported>Hike395 use nowrap class |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
local | -- determine whether we're being called from a sandbox | ||
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true) | |||
local sandbox = isSandbox and '/sandbox' or '' | |||
local getArgs = require('Module:Arguments').getArgs | |||
local yesno = require('Module:Yesno') | |||
local portalModule = require('Module:Portal'..sandbox) | |||
local getImageName = portalModule._image | |||
local checkPortals = portalModule._checkPortals | |||
local processPortalArgs = portalModule._processPortalArgs | |||
local p = {} | local p = {} | ||
local function | -- 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 | end | ||
local function image(portal, args) | |||
local size = args.size == "tiny" and "16x16px" or "32x28px" | |||
return string.format('[[File:%s|class=noviewer|%s]]',getImageName(portal,true), size) | |||
local function | |||
local | |||
end | end | ||
local function link(portal, args) | |||
local displayName = "" | |||
if not (args.text == "" or args.text == nil) then | |||
local function | displayName = args.text | ||
local | elseif args.short then | ||
displayName = portal | |||
else | |||
displayName = portal .. " portal" | |||
end | end | ||
return | return string.format('[[Portal:%s|%s]]',portal,displayName) | ||
end | end | ||
function p._main(portals, args) | function p._main(portals, args) | ||
mw.logObject(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 | end | ||
local trackingCat = '' | |||
local errMsg = nil | |||
-- Check for existing categories, drop if not. | |||
if | -- 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) | |||
-- | |||
return | |||
end | end | ||
return mw.ustring.format('<span class="nowrap">%s </span>%s%s', | |||
image(portals[1],args),link(portals[1],args),(trackingCat or '')) | |||
end | end | ||
function p.main(frame) | |||
local origArgs = getArgs(frame) | |||
local portals, args = processPortalArgs(origArgs) | |||
return p._main(portals, args) | |||
end | end | ||
return p | return p |
Latest revision as of 20:19, 22 May 2024
Documentation for this module may be created at Module:Portal-inline/doc
-- determine whether we're being called from a sandbox
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true)
local sandbox = isSandbox and '/sandbox' or ''
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local portalModule = require('Module:Portal'..sandbox)
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
local function image(portal, args)
local size = args.size == "tiny" and "16x16px" or "32x28px"
return string.format('[[File:%s|class=noviewer|%s]]',getImageName(portal,true), size)
end
local function link(portal, args)
local displayName = ""
if not (args.text == "" or args.text == nil) then
displayName = args.text
elseif args.short then
displayName = portal
else
displayName = portal .. " portal"
end
return string.format('[[Portal:%s|%s]]',portal,displayName)
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
return mw.ustring.format('<span class="nowrap">%s </span>%s%s',
image(portals[1],args),link(portals[1],args),(trackingCat or ''))
end
function p.main(frame)
local origArgs = getArgs(frame)
local portals, args = processPortalArgs(origArgs)
return p._main(portals, args)
end
return p