5441
редагування
Admin (обговорення | внесок) (Створена сторінка: local p = {} -- Список сторінок для пошуку цікавих фактів local pages_to_search = { "Перший сезон", "Другий сезон", "Третій сезон", "Четвертий сезон", "П'ятий сезон", "Шостий сезон", "Сьомий сезон", "Восьмий сезон", "Дев'ятий сезон", "Get Names 01", "Get Names 02", "Get N...) |
Admin (обговорення | внесок) Немає опису редагування |
||
| Рядок 1: | Рядок 1: | ||
local p = {} | local p = {} | ||
local pages_to_search = { | local pages_to_search = { | ||
"Перший сезон", | "Перший сезон", | ||
| Рядок 35: | Рядок 34: | ||
} | } | ||
local function get_facts_section(page_title) | local function get_facts_section(page_title) | ||
local title = mw.title.new(page_title) | local title = mw.title.new(page_title) | ||
| Рядок 47: | Рядок 45: | ||
end | end | ||
local section_start = mw.ustring.find(content, "==%s*[Цц]ікаві%s*[Фф]акти%s*==") | local section_start = mw.ustring.find(content, "==%s*[Цц]ікаві%s*[Фф]акти%s*==") | ||
| Рядок 54: | Рядок 51: | ||
end | end | ||
local section_end = mw.ustring.find(content, "\n==[^=]", section_start + 1) | local section_end = mw.ustring.find(content, "\n==[^=]", section_start + 1) | ||
| Рядок 67: | Рядок 63: | ||
end | end | ||
local function fact_contains_player(fact, player_name) | local function fact_contains_player(fact, player_name) | ||
local escaped_name = mw.ustring.gsub(player_name, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") | local escaped_name = mw.ustring.gsub(player_name, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") | ||
local pattern1 = "%[%[" .. escaped_name .. "%]%]" | local pattern1 = "%[%[" .. escaped_name .. "%]%]" | ||
local pattern2 = "%[%[" .. escaped_name .. "|[^%]]+%]%]" | local pattern2 = "%[%[" .. escaped_name .. "|[^%]]+%]%]" | ||
| Рядок 83: | Рядок 76: | ||
end | end | ||
local function extract_facts(section_content) | local function extract_facts(section_content) | ||
local facts = {} | local facts = {} | ||
| Рядок 94: | Рядок 86: | ||
end | end | ||
function p.facts(frame) | function p.facts(frame) | ||
local player_name = frame.args.player or frame.args[1] | local player_name = frame.args.player or frame.args[1] | ||
| Рядок 113: | Рядок 93: | ||
end | end | ||
local | local result_parts = {} | ||
for _, page_title in ipairs(pages_to_search) do | for _, page_title in ipairs(pages_to_search) do | ||
local section = get_facts_section(page_title) | local section = get_facts_section(page_title) | ||
| Рядок 121: | Рядок 100: | ||
if section then | if section then | ||
local facts = extract_facts(section) | local facts = extract_facts(section) | ||
local player_facts = {} | |||
for _, fact in ipairs(facts) do | for _, fact in ipairs(facts) do | ||
if fact_contains_player(fact, player_name) then | if fact_contains_player(fact, player_name) then | ||
table.insert(player_facts, fact) | |||
table.insert( | end | ||
end | |||
if #player_facts > 0 then | |||
table.insert(result_parts, string.format("=== [[%s]] ===", page_title)) | |||
for _, fact in ipairs(player_facts) do | |||
table.insert(result_parts, fact) | |||
end | end | ||
end | end | ||
| Рядок 131: | Рядок 117: | ||
end | end | ||
if # | if #result_parts == 0 then | ||
return "" | return "" | ||
end | end | ||
return table.concat( | return table.concat(result_parts, "\n") | ||
end | end | ||
function p.facts_count(frame) | function p.facts_count(frame) | ||
local player_name = frame.args.player or frame.args[1] | local player_name = frame.args.player or frame.args[1] | ||