5261
редагування
Admin (обговорення | внесок) Немає опису редагування |
Admin (обговорення | внесок) Немає опису редагування |
||
| Рядок 16: | Рядок 16: | ||
---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ||
-- ГОЛОВНИЙ ПОШУК ( | -- ГОЛОВНИЙ ПОШУК (Надійно парсить без goto, шукає "Кексік") | ||
---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ||
local function fetch_from_table(page_title, passed_player_name, column_index) | local function fetch_from_table(page_title, passed_player_name, column_index) | ||
-- !!! ЖОРСТКЕ КОДУВАННЯ | -- !!! ЖОРСТКЕ КОДУВАННЯ | ||
local player_name = "Кексік" | local player_name = "Кексік" | ||
if not player_name or player_name == "" then | if not player_name or player_name == "" then | ||
| Рядок 41: | Рядок 41: | ||
local escaped = mw.ustring.gsub(player_name, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") | local escaped = mw.ustring.gsub(player_name, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") | ||
local player_pattern = "%[%[" .. escaped .. "%]%]" | local player_pattern = "%[%[" .. escaped .. "%]%]" | ||
local result = nil | local result = nil | ||
-- Ітерація по всіх рядках, що починаються з `|-` | |||
for row in mw.ustring.gmatch(table_content, "\n%s*|-[^%s]*\n(.-)") do | for row in mw.ustring.gmatch(table_content, "\n%s*|-[^%s]*\n(.-)") do | ||
-- Перевіряємо, чи містить рядок ім'я гравця у форматі [[ | -- Перевіряємо, чи містить рядок ім'я гравця у форматі [[Кексік]] | ||
if mw.ustring.find(row, player_pattern, 1, true) then | if mw.ustring.find(row, player_pattern, 1, true) then | ||
local cell_data = {} | local cell_data = {} | ||
local | local cell_part_string = "" | ||
local first_cell_match = mw.ustring.match(row, "^%s*[|]%s*(.-)%s*[|][|](.*)$") -- Захоплює першу комірку та решту | |||
if first_cell_match then | |||
-- first_cell_match = "001" | |||
-- second_match (неявний) = " [[Кексік]] || 29.12.2022 || [[Демон]]" | |||
-- Розбиваємо за допомогою string.match для більшої надійності: | |||
local first_content, rest_of_row = mw.ustring.match(row, "^%s*[|]%s*(.-)%s*[|][|](.*)$") | |||
if first_content then | |||
table.insert(cell_data, mw.text.trim(first_content)) | |||
cell_part_string = rest_of_row | |||
end | |||
end | |||
-- Витягуємо решту комірок, розділених '||' | |||
if cell_part_string then | |||
local parts = mw.text.split(cell_part_string, '||') | |||
for _, part in ipairs(parts) do | |||
table.insert(cell_data, mw.text.trim(part)) | |||
end | |||
end | |||
if # | -- Перевірка, що ми знайшли [[Кексік]] саме в Колонці 2 | ||
if #cell_data >= 2 and mw.ustring.find(cell_data[2], player_pattern) then | |||
-- Перевірка, чи існує потрібна колонка | |||
if column_index <= #cell_data and cell_data[column_index] then | |||
result = clean_wikilinks(cell_data[column_index]) | |||
break -- Знайшли, виходимо з циклу gmatch | |||
end | end | ||
end | end | ||
| Рядок 145: | Рядок 155: | ||
end | end | ||
function p.season_result(frame) | function p.season_result(frame) | ||
return nil | return nil | ||