5441
редагування
Admin (обговорення | внесок) Немає опису редагування Мітка: Ручний відкіт |
Admin (обговорення | внесок) Немає опису редагування |
||
| Рядок 32: | Рядок 32: | ||
-- Отримуємо заголовки (перший рядок після {|) | -- Отримуємо заголовки (перший рядок після {|) | ||
local headers = {} | local headers = {} | ||
local first_row = mw.ustring. | local first_row = nil | ||
-- Шукаємо рядок з заголовками | |||
for line in mw.ustring.gmatch(table_content, "([^\n]+)") do | |||
if mw.ustring.match(line, "^!") then | |||
first_row = line | |||
break | |||
end | |||
end | |||
if first_row then | if first_row then | ||
-- Розбиваємо | -- Замінюємо на пробіли | ||
for header in mw.ustring.gmatch(first_row, "([^ | first_row = mw.ustring.gsub(first_row, " ", " ") | ||
-- Розбиваємо по ! або !! | |||
for header in mw.ustring.gmatch(first_row, "!+%s*([^!]+)") do | |||
local trimmed = mw.text.trim(header) | local trimmed = mw.text.trim(header) | ||
if trimmed ~= "" then | if trimmed ~= "" then | ||
| Рядок 85: | Рядок 96: | ||
--- Генерує іконку медалі | --- Генерує іконку медалі | ||
local function get_medal_icon(value) | local function get_medal_icon(value) | ||
if not value or value == "" or value == " " then | if not value or value == "" or value == " " then | ||
return nil | return nil | ||
end | end | ||
value = mw.text.trim(value) | value = mw.text.trim(value) | ||
| Рядок 130: | Рядок 139: | ||
--- Генерує посилання на турнір | --- Генерує посилання на турнір | ||
local function get_tournament_link(header_name) | local function get_tournament_link(header_name) | ||
local season_num = mw.ustring.match(header_name, "([А-Яа-яЁёІіЇїЄєҐґ']+) сезон %(фінал%)") | local season_num = mw.ustring.match(header_name, "([А-Яа-яЁёІіЇїЄєҐґ']+) сезон %(фінал%)") | ||
if not season_num then | if not season_num then | ||
| Рядок 137: | Рядок 145: | ||
if season_num then | if season_num then | ||
local season_map = { | local season_map = { | ||
["Перший"] = 1, ["Другий"] = 2, ["Третій"] = 3, | ["Перший"] = 1, ["Другий"] = 2, ["Третій"] = 3, | ||
| Рядок 148: | Рядок 155: | ||
local roman = to_roman(season_number) | local roman = to_roman(season_number) | ||
local type_text = "" | local type_text = "" | ||
if mw.ustring.find(header_name, "фінал") then | if mw.ustring.find(header_name, "фінал") then | ||
| Рядок 156: | Рядок 162: | ||
end | end | ||
local clean_name = mw.ustring.gsub(header_name, "%s*%(фінал%)%s*", "") | local clean_name = mw.ustring.gsub(header_name, "%s*%(фінал%)%s*", "") | ||
clean_name = mw.ustring.gsub(clean_name, "%s*%(рейтинг%)%s*", "") | clean_name = mw.ustring.gsub(clean_name, "%s*%(рейтинг%)%s*", "") | ||
| Рядок 165: | Рядок 170: | ||
end | end | ||
return string.format("[[%s]]", header_name) | return string.format("[[%s]]", header_name) | ||
end | end | ||
| Рядок 186: | Рядок 190: | ||
-- Отримуємо дані з таблиці "Призовий_фонд" | -- Отримуємо дані з таблиці "Призовий_фонд" | ||
local prize_data | local prize_data = get_player_row("Призовий_фонд", name) | ||
-- Створюємо мапу призових | |||
local prize_map = {} | |||
if prize_data then | |||
for j = 1, #prize_data.headers do | |||
local header = prize_data.headers[j] | |||
local value = prize_data.cells[j] or "" | |||
prize_map[header] = value | |||
end | |||
end | |||
-- Мапа дат турнірів | -- Мапа дат турнірів | ||
local tournament_dates = { | local tournament_dates = { | ||
["Перший сезон"] = " | ["Перший сезон"] = "09.09.2023", | ||
["Другий сезон"] = " | ["Другий сезон"] = "28.10.2023", | ||
["Третій сезон"] = " | ["Третій сезон"] = "23.12.2023", | ||
["Четвертий сезон"] = " | ["Четвертий сезон"] = "10.02.2024", | ||
["П'ятий сезон"] = " | ["П'ятий сезон"] = "06.04.2024", | ||
["Шостий сезон"] = " | ["Шостий сезон"] = "11.05.2024", | ||
["Сьомий сезон"] = " | ["Сьомий сезон"] = "06.07.2024", | ||
["Восьмий сезон"] = " | ["Восьмий сезон"] = "10.08.2024", | ||
["Дев'ятий сезон"] = "28. | ["Дев'ятий сезон"] = "28.09.2024", | ||
["Mafia Closed Cup I"] = " | ["Mafia Closed Cup I"] = "12.11.2023", | ||
["Mafia Closed Cup I Online"] = "01 | ["Mafia Closed Cup I Online"] = "28.01.2024", | ||
["Фінал Року"] = " | ["Фінал Року"] = "13.10.2024" | ||
} | } | ||
| Рядок 215: | Рядок 229: | ||
if medal then | if medal then | ||
-- | -- Прибираємо (фінал)/(рейтинг) для пошуку призових | ||
local clean_header = mw.ustring.gsub(header, "%s*%(фінал%)%s*", "") | local clean_header = mw.ustring.gsub(header, "%s*%(фінал%)%s*", "") | ||
clean_header = mw.ustring.gsub(clean_header, "%s*%(рейтинг%)%s*", "") | clean_header = mw.ustring.gsub(clean_header, "%s*%(рейтинг%)%s*", "") | ||
clean_header = mw.text.trim(clean_header) | clean_header = mw.text.trim(clean_header) | ||
-- | -- Нормалізуємо апостроф | ||
clean_header = mw.ustring.gsub(clean_header, "'", "'") | |||
-- Шукаємо призові | |||
local prize_value = prize_map[clean_header] | |||
if not prize_value then | |||
clean_header = mw.ustring.gsub(clean_header, "'", "'") | |||
prize_value = prize_map[clean_header] | |||
end | |||
local prize_amount = "0 ₴" | local prize_amount = "0 ₴" | ||
if | if prize_value and prize_value ~= "" and prize_value ~= "-" and prize_value ~= "0" then | ||
prize_amount = prize_value .. " ₴" | |||
end | end | ||
-- | -- Дата турніру | ||
local date = tournament_dates[clean_header] or "01.01.2023" | local date = tournament_dates[clean_header] or "01.01.2023" | ||
-- | -- Посилання на турнір | ||
local tournament_link = get_tournament_link(header) | local tournament_link = get_tournament_link(header) | ||
| Рядок 244: | Рядок 258: | ||
local place_text = "" | local place_text = "" | ||
if cell_value == "1" then | if cell_value == "1" then | ||
place_text = "1-е | place_text = "1-е" | ||
elseif cell_value == "2" then | elseif cell_value == "2" then | ||
place_text = "2-е | place_text = "2-е" | ||
elseif cell_value == "3" then | elseif cell_value == "3" then | ||
place_text = "3-є | place_text = "3-є" | ||
elseif cell_value == "4" then | elseif cell_value == "4" then | ||
place_text = " | place_text = "Участь" | ||
elseif cell_value == "S" or mw.ustring.match(cell_value, "^S%d") then | elseif cell_value == "S" or mw.ustring.match(cell_value, "^S%d") then | ||
place_text = " | place_text = "Кращий" | ||
end | end | ||