Модуль:Звесткі пра футбольны клуб

З Вікіпедыі, свабоднай энцыклапедыі
(i) Дакументацыя

Гэты модуль прызначаны для таго, каб атрымоўваць звесткі аб футбольных клубах, якія запісаны ў Модуль:Футбольныя клубы.

У цяперашні час даступны наступныя функцыі:

  • getClubLink — вяртае назву артыкула пра клуб
  • getClubAbbreviature — вяртае скарочаную назву клуба, якая выкарыстоўваецца для подпісу слупкоў у шаблоне {{Fb r header}}
  • getClubName — вяртае назву клуба

Выкарыстоўваць функцыі модуля варта не непасрэдна, а з дапамогай спецыяльнага шаблона {{Звесткі пра футбольны клуб}}.

Каб пазбегнуць паломак старонак, дзе ўжыты гэты модуль, пажадана эксперыментаваць у пясочніцы для модуляў.


local clubData = require( 'Module:Футбольныя клубы' )
local errors = require( 'Module:Error' )

local p = {}

local function showError( message, category )
	return errors.error( { ['message'] = 'Памылка: ' .. tostring( message ) .. '.' .. ( ( category == nil or category == '' ) and '' or '[[Катэгорыя:' .. category .. ']]' ) } )
end

local function fallbackArgs( args, ... )
	for i = 1, arg.n do
		if args[arg[i]] ~= nil then return args[arg[i]] end
	end
	return nil
end

local function lcArgs( args )
	local newArgs = {}
	for k, v in pairs( args ) do
		if type( k ) == "string" then
			newArgs[mw.ustring.lower( k )] = type( v ) == 'string' and mw.text.trim( v ) or v
		else
			newArgs[k] = type( v ) == 'string' and mw.text.trim( v ) or v
		end
	end
	return newArgs
end
local function getClubData( club )
	return clubData [club]
end

function p.getClubLink( frame )
	local args
	if frame == mw.getCurrentFrame() then
		args = frame:getParent().args
	else
		args = frame
	end
	args = lcArgs( args )
	local club, link = tostring( args[2] ), 'спасылка' 
	local isLoop = 0
	while type( getClubData( club ) ) == 'string' do
		isLoop = isLoop + 1
		if isLoop > 6 then return showError( 'клуб не знойдзены з-за множных перанакіраванняў', 'Старонкі з некарэктнымі параметрамі футбольнага клуба' ) end
		club = getClubData( club ) -- пераход па рэдырэкце, у тым ліку двайным
	end
	if getClubData( club ) == nil then return showError( 'клуб «' .. club .. '» не існуе або не дададзены ў [[Модуль:Футбольныя клубы]]', 'Старонкі з некарэктнымі параметрамі футбольнага клуба' ) end
	if getClubData( club )[link] == nil then return showError( 'у клуба «' .. club .. '» не апісана поле "спасылка" ў [[Модуль:Футбольныя клубы]]', 'Старонкі з некарэктнымі параметрамі футбольнага клуба' ) end
	return getClubData( club )[link]
end

function p.getClubAbbreviature( frame )
	local args
	if frame == mw.getCurrentFrame() then
		args = frame:getParent().args
	else
		args = frame
	end
	args = lcArgs( args )
	local club, abb = tostring( args[2] ), 'абрэвіятура' 
	local isLoop = 0
	while type( getClubData( club ) ) == 'string' do
		isLoop = isLoop + 1
		if isLoop > 6 then return showError( 'клуб не знойдзены з-за множных перанакіраванняў', 'Старонкі з некарэктнымі параметрамі футбольнага клуба' ) end
		club = getClubData( club ) -- пераход па рэдырэкце, у тым ліку двайным
	end
	if getClubData( club ) == nil then return showError( 'клуб «' .. club .. '» не існуе або не дададзены ў [[Модуль:Футбольныя клубы]]', 'Старонкі з некарэктнымі параметрамі футбольнага клуба' ) end
	if getClubData( club )[abb] == nil then return showError( 'у клуба «' .. club .. '» не апісана поле "абрэвіятура" ў [[Модуль:Футбольныя клубы]]', 'Старонкі з некарэктнымі параметрамі футбольнага клуба' ) end
	return getClubData( club )[abb]
end

function p.getClubName( frame )
	local args
	if frame == mw.getCurrentFrame() then
		args = frame:getParent().args
	else
		args = frame
	end
	args = lcArgs( args )
	local club, name = tostring( args[2] ), 'назва' 
	local isLoop = 0
	while type( getClubData( club ) ) == 'string' do
		isLoop = isLoop + 1
		if isLoop > 6 then return showError( 'клуб не знойдзены з-за множных перанакіраванняў', 'Старонкі з некарэктнымі параметрамі футбольнага клуба' ) end
		club = getClubData( club ) -- пераход па рэдырэкце, у тым ліку двайным
	end
	if getClubData( club ) == nil then return showError( 'клуб «' .. club .. '» не існуе або не дададзены ў [[Модуль:Футбольныя клубы]]', 'Старонкі з некарэктнымі параметрамі футбольнага клуба' ) end
	if getClubData( club )[name] == nil then return showError( 'у клуба «' .. club .. '» не апісана поле "назва" ў [[Модуль:Футбольныя клубы]]', 'Старонкі з некарэктнымі параметрамі футбольнага клуба' ) end
	if getClubData( club )[name].default == nil then return showError( 'у клуба «' .. club .. '» не здаддзена назва па змоўчванні ў параметры "default" поля "назва" ў [[Модуль:Футбольныя клубы]]', 'Старонкі з некарэктнымі параметрамі сцягафікацыі' ) end
	return getClubData( club )[name].default
end

return p