Модуль:ЛНВиступ
Перейти до навігації
Перейти до пошуку
Документація модуля[створити]
Зараз цей модуль не має відповідної документації. Якщо вам відомі призначення та засади використання цього модуля, будь ласка, напишіть хоча б коротеньку документацію. |
Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього шаблону. Підсторінки цієї сторінки. |
require('Module:No globals')
local yesno = require('Module:Yesno')
-- Exported members
local p = {}
-- Private members
local m = {}
local args = {}
local data = {}
local function getArgs(frame)
local parents = mw.getCurrentFrame():getParent()
for k,v in pairs(parents.args) do
--check content
if v and v ~= "" then
args[k]=mw.text.trim(v) --parents.args[k]
end
end
for k,v in pairs(frame.args) do
--check content
if v and v ~= "" then
args[k]= mw.text.trim(v) --parents.args[k]
end
end
end
function p.main(frame)
getArgs(frame)
data = require('Модуль:ЛНВиступ/data')
local host = yesno(args['г'] or args['господарі'])
local season = data[m.getSeason(args.season)]
return m.createEntry(frame, season, args.league, args.group, args.pld, args.w or 0, args.d or 0, args.l or 0, args.gf or 0, args.ga or 0, args.rnk, args.chng or '~', host)
end
-- 2010-2011 -> 10
-- 2010-11 -> 10
-- 10-11 -> 10
-- 2010/2011 -> 10
-- 2010/11 -> 10
-- 10/11 -> 10
-- 2010 -> 10
-- 2010 -> 10
-- 10 -> 10
-- 2011-12 -> nil (starts with odd year)
-- 2011/12 -> nil (-"-)
-- ...
-- else -> nil
function m.getSeason(seasonArg)
local season = m.split(seasonArg, '%-')
if season then
return season
end
season = m.split(seasonArg, '/')
if season then
return season
end
season = tonumber(seasonArg)
return m.getSeasonYear(season)
end
function m.split(s, separator)
local idx = string.find(s or '', separator)
local season = idx and tonumber(string.sub(s, 1, idx - 1)) or nil
return m.getSeasonYear(season)
end
function m.getSeasonYear(year)
return (year and year % 2 == 0) and ((year > 2000) and year - 2000 or year) or nil
end
function m.createEntry(frame, season, league, group, pld, w, d, l, gf, ga, rnk, chng, host)
return (host and 'style="border: 2px solid red;"|' or '')..m.flagiconTemplate(frame, season.host)..' [[Ліга націй УЄФА '..season.years..'|'..season.yearsDisplay..']]||[[Ліга націй УЄФА '..season.years..' (Ліга '..league..')|'..league..']]||[[Ліга націй УЄФА '..season.years..' (Ліга '..league..')#Група '..group..'|'..group..']]||'..pld..'||'..w..'||'..d..'||'..l..'||'..gf..'||'..ga..'||'..m.formatChange(frame, chng)..'||'..m.formatRank(frame, rnk, season.yearFinal)
end
function m.flagiconTemplate(frame, country, flagVariant)
--local flagVariant = variant or ''
return frame:expandTemplate{ title = 'ПрапорЗначок' , args = { country, flagVariant } }
end
function m.formatChange(frame, change)
if change == '+' then
return frame:expandTemplate{ title = 'rise' , args = { 'a', 'Підвищення' } }
elseif change == '~' then
return frame:expandTemplate{ title = 'same position' , args = { '', 'Без змін' } }
elseif change == '-' then
return frame:expandTemplate{ title = 'fall' , args = { 'a', 'Пониження' } }
else
return ''
end
end
function m.formatRank(frame, srank, yearOfFinal)
if not srank then
return ''
end
local rank = tonumber(srank)
if srank == 'б/в' then
return frame:expandTemplate{ title = 'abbr' , args = { 'б/в', 'буде визначено', 'Фінал чотирьох Ліги націй УЄФА '..yearOfFinal } }
end
local topFour = rank and rank >= 1 and rank <= 4
local suffix = (string.sub(srank, string.len(srank), string.len(srank) + 1) == '3' and not rank == 13) and 'є' or 'е'
if topFour then
return '[[Фінал чотирьох Ліги націй УЄФА '..yearOfFinal..'|'..srank..'-'..suffix..']]'
else
return srank..'-'..suffix
end
end
function p.currentSeason(frame)
data = require('Модуль:ЛНВиступ/data')
return data.currentSeason
end
function p.parseSeason(frame)
getArgs(frame)
data = require('Модуль:ЛНВиступ/data')
return m.getSeason(args[1])
end
function p.host(frame)
getArgs(frame)
data = require('Модуль:ЛНВиступ/data')
local season = data[m.getSeason(args[1])]
return season and season.host or nil
end
return p