Модуль:Партал у лінію

Зьвесткі зь Вікіпэдыі — вольнай энцыкляпэдыі

Дакумэнтацыю да гэтага модуля можна стварыць у Модуль:Партал у лінію/Дакумэнтацыя

-- determine whether we're being called from a sandbox
local isSandbox = mw.getCurrentFrame():getTitle():find('пясочніца', 1, true)
local sandbox = isSandbox and '/пясочніца' or ''

local getArgs = require('Модуль:Аргумэнты').getArgs
local yesno = require('Модуль:ТакНе')
local portalModule = require('Модуль:Партал'..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("Памылка: "..errMsg)
		result = tostring(errTag)..result
	end
	return result
end

local function image(portal, args)
	local size = args['памер'] == "малы" and "16x16пкс" or "32x28пкс"
	return string.format('[[Файл:%s|class=noviewer|%s]]',getImageName(portal,true), size)
end

local function link(portal, args)
	local displayName = ""
	if not (args['тэкст'] == "" or args['тэкст'] == nil) then
		displayName = args['тэкст']
	elseif args['сьцісла'] then
		displayName = portal
	else
		displayName = portal .. " партал"
	end
	return string.format('[[Партал:%s|%s]]',portal,displayName)
end

function p._main(portals, args)
	mw.logObject(args)
	
	-- Normalize all arguments
	if args['чырвоныя спасылкі'] == 'уключаць' then args['чырвоныя спасылкі'] = 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['мін парталаў'] or 1
	args.maxPortals = args['макс парталаў'] or 1
	portals, trackingCat, errMsg = checkPortals(portals,args)
	-- use more specific tracking cat for inline portal
	trackingCat = mw.ustring.gsub(trackingCat,"Вікіпэдыя:Шаблёны:Прастора назваў парталаў","Партал у лінію")
	-- 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 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