5261
редагування
Admin (обговорення | внесок) Немає опису редагування |
Admin (обговорення | внесок) Немає опису редагування |
||
| Рядок 205: | Рядок 205: | ||
function p.foty_rating(frame) | function p.foty_rating(frame) | ||
local name = frame.args.player | local name = frame.args.player | ||
if | if not name or name == "" then | ||
return "0" | return "0" | ||
end | end | ||
local title = mw.title.new("Період") | |||
if not title or not title.exists then | |||
return "0" | return "0" | ||
end | end | ||
-- | local content = title:getContent() | ||
if not content then | |||
return "0" | |||
end | |||
-- Шукаємо секцію "Фінал Року" | |||
local section_start = mw.ustring.find(content, "== Фінал Року ==") | |||
if not section_start then | |||
return "0" | |||
end | |||
-- Знаходимо таблицю після секції | |||
local table_start = mw.ustring.find(content, "{|", section_start) | |||
if not table_start then | |||
return "0" | |||
end | |||
local table_end = mw.ustring.find(content, "|}", table_start) | |||
if not table_end then | |||
return "0" | |||
end | |||
-- Видаляємо всі нецифрові символи окрім мінуса | local table_content = mw.ustring.sub(content, table_start, table_end + 1) | ||
-- Екрануємо спеціальні символи в імені гравця | |||
local escaped = mw.ustring.gsub(name, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") | |||
local player_pattern = "%[%[" .. escaped .. "%]%]" | |||
-- Збираємо всі рядки | |||
local rows = {} | |||
for row in mw.ustring.gmatch(table_content, "|-\n(.-)\n|-") do | |||
table.insert(rows, row) | |||
end | |||
local last_row = mw.ustring.match(table_content, "|-\n(.-)%s*|}") | |||
if last_row then | |||
table.insert(rows, last_row) | |||
end | |||
-- Обробляємо кожен рядок | |||
for _, row in ipairs(rows) do | |||
if mw.ustring.find(row, player_pattern) then | |||
local cells = {} | |||
row = mw.ustring.gsub(row, "^%s*|%s*", "") | |||
for cell in mw.ustring.gmatch(row, "([^|]+)") do | |||
local trimmed = mw.text.trim(cell) | |||
if trimmed ~= "" then | |||
table.insert(cells, trimmed) | |||
end | |||
end | |||
-- Колонка 3 - це рейтинг (Σ) | |||
if #cells >= 3 then | |||
local rating = cells[3] | |||
-- Видаляємо HTML теги | |||
rating = mw.ustring.gsub(rating, "<span[^>]*>", "") | |||
rating = mw.ustring.gsub(rating, "</span>", "") | |||
-- Видаляємо всі нецифрові символи окрім мінуса | |||
rating = mw.ustring.gsub(rating, "[^%d%-]", "") | |||
rating = mw.text.trim(rating) | |||
if rating and rating ~= "" then | |||
return rating | |||
end | |||
end | |||
return "0" | |||
end | |||
end | |||
return | return "0" | ||
end | end | ||