Home  

Random  

Nearby  



Log in  



Settings  



Donate  



About Wikipedia  

Disclaimers  



Wikipedia





Module:Portal-inline





Module  

Talk  



Language  

Watch  

View source  





This module implements Template:Portal-inline. This module accepts one unnamed parameter which is the portal to link to and several named parameters:

-- 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

Retrieved from "https://en.wikipedia.org/w/index.php?title=Module:Portal-inline&oldid=1225211461"
 



Last edited on 23 May 2024, at 01:19  


Languages

 


Basa Bali

Беларуская (тарашкевіца)
Bikol Central
Cebuano
فارسی
Bahasa Indonesia
Kurdî


Монгол



Português
Simple English
Slovenščina
Tagalog
ி
 

Тоҷикӣ
Türkçe
Українська
Tiếng Vit

 

Wikipedia


This page was last edited on 23 May 2024, at 01:19 (UTC).

Content is available under CC BY-SA 4.0 unless otherwise noted.



Privacy policy

About Wikipedia

Disclaimers

Contact Wikipedia

Code of Conduct

Developers

Statistics

Cookie statement

Terms of Use

Desktop