5261
редагування
Admin (обговорення | внесок) Немає опису редагування |
Admin (обговорення | внесок) Немає опису редагування |
||
| Рядок 19: | Рядок 19: | ||
-- Вилучаємо вміст таблиці wikitable | -- Вилучаємо вміст таблиці wikitable | ||
local table_content = mw.ustring.match(content, "{|%s*class%s*=%s*\"wikitable\".-([|]-.-[|]})") | -- Використовуємо нежадібний пошук (.-?) між {| і |} | ||
local table_content = mw.ustring.match(content, "{|%s*class%s*=%s*\"wikitable\".-([|].-.-[|]})") | |||
if not table_content then | if not table_content then | ||
return nil | return nil | ||
| Рядок 27: | Рядок 28: | ||
local player_link_pattern = "%[?%[" .. escaped_player .. "%]%]?" | local player_link_pattern = "%[?%[" .. escaped_player .. "%]%]?" | ||
-- 1. | -- 1. СТІЙКИЙ ПОШУК РЯДКА: Шукаємо гравця у ДРУГІЙ колонці | ||
-- | -- Шаблон: | ||
-- | -- 1. `[|]%s*.-` - Перша колонка (| 000) | ||
-- 2. `[|]%s*` - Роздільник | |||
-- 3. `(.-)` - Друга колонка (захоплюємо вміст, який включає гравця) | |||
-- 4. `[|]%s*.-[|]` - Захоплюємо решту колонок (3 і 4) | |||
-- 2. | |||
-- 3. (.-) - захоплюємо | |||
-- 4. | |||
-- Шукаємо послідовність, що включає | <№> | [[Гравець]] | | |||
local search_pattern = "([|]%s*.-%s*[|]%s*" .. player_link_pattern .. "%s*[|].-)" | |||
local full_row_match = mw.ustring.match(table_content, search_pattern) | local full_row_match = mw.ustring.match(table_content, search_pattern) | ||
if not full_row_match then | if not full_row_match then | ||
-- | -- Додатковий пошук на випадок, якщо потрібен символ початку рядка |-\n | ||
local row_start_pattern = "[|]%s*.-%s*[%-]%s*([|]%s*.-%s*[|]%s*" .. player_link_pattern .. "%s*[|].-)" | |||
full_row_match = mw.ustring.match(table_content, row_start_pattern) | |||
full_row_match = mw.ustring.match(table_content, | |||
if not full_row_match then | if not full_row_match then | ||
return nil | return nil | ||
| Рядок 59: | Рядок 51: | ||
-- 2. Надійне розділення на комірки. | -- 2. Надійне розділення на комірки. | ||
-- | -- Розділяємо весь захоплений блок на окремі комірки по | | ||
for cell in mw.ustring.gmatch(full_row_match, "[|](.-)") do | for cell in mw.ustring.gmatch(full_row_match, "[|](.-)") do | ||
local trimmed_cell = mw.text.trim(cell) | local trimmed_cell = mw.text.trim(cell) | ||
-- | -- Видаляємо службові елементи | ||
if trimmed_cell ~= "" and not mw.ustring.match(trimmed_cell, "^!") then | if trimmed_cell ~= "" and not mw.ustring.match(trimmed_cell, "^!") then | ||
table.insert(columns, trimmed_cell) | table.insert(columns, trimmed_cell) | ||
| Рядок 72: | Рядок 64: | ||
if result then | if result then | ||
-- 3. Очищення результату | -- 3. Очищення результату: видалення зовнішніх [[ ]] | ||
result = mw.text.trim(mw.ustring.gsub(result, "%[?%[?(.+)%]%]?", "%1")) | result = mw.text.trim(mw.ustring.gsub(result, "%[?%[?(.+)%]%]?", "%1")) | ||
return result | return result | ||
| Рядок 139: | Рядок 130: | ||
end | end | ||
-- Очищення від символів валют | -- Очищення від символів валют та пробілів | ||
amount = mw.ustring.gsub(amount, "[^%d%s]", "") | amount = mw.ustring.gsub(amount, "[^%d%s]", "") | ||
amount = mw.text.trim(amount) | amount = mw.text.trim(amount) | ||