Модуль:TournamentNav: відмінності між версіями

Немає опису редагування
Мітка: Скасовано
Немає опису редагування
 
(Не показано 7 проміжних версій цього користувача)
Рядок 1: Рядок 1:
local p = {}
local p = {}


--- Список турнірів у порядку
local tournament_order = {
local tournament_order = {
     "Перший сезон",
     "Перший сезон",
Рядок 12: Рядок 11:
     "Восьмий сезон",
     "Восьмий сезон",
     "Дев'ятий сезон",
     "Дев'ятий сезон",
     "Фінал Року"
     "Фінал Року" -- ЗМІНЕНО: без '23-24
}
}


--- Знаходить індекс турніру
local name_mapping = {
    ["I сезон"] = "Перший сезон",
    ["II сезон"] = "Другий сезон",
    ["III сезон"] = "Третій сезон",
    ["IV сезон"] = "Четвертий сезон",
    ["V сезон"] = "П'ятий сезон",
    ["VI сезон"] = "Шостий сезон",
    ["VII сезон"] = "Сьомий сезон",
    ["VIII сезон"] = "Восьмий сезон",
    ["IX сезон"] = "Дев'ятий сезон",
    ["Фінал Року'23-24"] = "Фінал Року"  -- ЗМІНЕНО: мапінг в зворотний бік
}
 
local function normalize_name(name)
    return name_mapping[name] or name
end
 
local function find_tournament_index(tournament_name)
local function find_tournament_index(tournament_name)
    local normalized = normalize_name(tournament_name)
     for i, name in ipairs(tournament_order) do
     for i, name in ipairs(tournament_order) do
         if name == tournament_name then
         if name == normalized then
             return i
             return i
         end
         end
Рядок 25: Рядок 41:
end
end


--- Повертає посилання на попередній турнір (циклічно)
function p.prevLink(frame)
function p.prevLink(frame)
     local current_tournament = frame.args[1] or mw.title.getCurrentTitle().text
     local current_tournament = frame.args[1] or mw.title.getCurrentTitle().text
Рядок 34: Рядок 49:
     end
     end
      
      
    -- Циклічна навігація: якщо перший, то йдемо до останнього
     local prev_index = index == 1 and #tournament_order or index - 1
     local prev_index = index == 1 and #tournament_order or index - 1
     local prev_tournament = tournament_order[prev_index]
     local prev_tournament = tournament_order[prev_index]
Рядок 41: Рядок 55:
end
end


--- Повертає посилання на наступний турнір (циклічно)
function p.nextLink(frame)
function p.nextLink(frame)
     local current_tournament = frame.args[1] or mw.title.getCurrentTitle().text
     local current_tournament = frame.args[1] or mw.title.getCurrentTitle().text
Рядок 50: Рядок 63:
     end
     end
      
      
    -- Циклічна навігація: якщо останній, то йдемо до першого
     local next_index = index == #tournament_order and 1 or index + 1
     local next_index = index == #tournament_order and 1 or index + 1
     local next_tournament = tournament_order[next_index]
     local next_tournament = tournament_order[next_index]

Поточна версія на 16:23, 30 листопада 2025

Документацію для цього модуля можна створити у Модуль:TournamentNav/документація

local p = {}

local tournament_order = {
    "Перший сезон",
    "Другий сезон",
    "Третій сезон",
    "Четвертий сезон",
    "П'ятий сезон",
    "Шостий сезон",
    "Сьомий сезон",
    "Восьмий сезон",
    "Дев'ятий сезон",
    "Фінал Року"  -- ЗМІНЕНО: без '23-24
}

local name_mapping = {
    ["I сезон"] = "Перший сезон",
    ["II сезон"] = "Другий сезон",
    ["III сезон"] = "Третій сезон",
    ["IV сезон"] = "Четвертий сезон",
    ["V сезон"] = "П'ятий сезон",
    ["VI сезон"] = "Шостий сезон",
    ["VII сезон"] = "Сьомий сезон",
    ["VIII сезон"] = "Восьмий сезон",
    ["IX сезон"] = "Дев'ятий сезон",
    ["Фінал Року'23-24"] = "Фінал Року"  -- ЗМІНЕНО: мапінг в зворотний бік
}

local function normalize_name(name)
    return name_mapping[name] or name
end

local function find_tournament_index(tournament_name)
    local normalized = normalize_name(tournament_name)
    for i, name in ipairs(tournament_order) do
        if name == normalized then
            return i
        end
    end
    return nil
end

function p.prevLink(frame)
    local current_tournament = frame.args[1] or mw.title.getCurrentTitle().text
    local index = find_tournament_index(current_tournament)
    
    if not index then
        return '<span style="color:#666;">←</span>'
    end
    
    local prev_index = index == 1 and #tournament_order or index - 1
    local prev_tournament = tournament_order[prev_index]
    
    return '[[' .. prev_tournament .. '|←]]'
end

function p.nextLink(frame)
    local current_tournament = frame.args[1] or mw.title.getCurrentTitle().text
    local index = find_tournament_index(current_tournament)
    
    if not index then
        return '<span style="color:#666;">→</span>'
    end
    
    local next_index = index == #tournament_order and 1 or index + 1
    local next_tournament = tournament_order[next_index]
    
    return '[[' .. next_tournament .. '|→]]'
end

return p