Модуль:FetchData7: відмінності між версіями

2385 байтів додано ,  25 грудня 2025
нема опису редагування
Немає опису редагування
Немає опису редагування
 
(Не показані 2 проміжні версії цього користувача)
Рядок 1: Рядок 1:
local p = {}
local p = {}
local page_cache = {}
local page_cache = {}


Рядок 17: Рядок 16:
     page_cache[page_name] = content
     page_cache[page_name] = content
     return content
     return content
end
local function get_section_content(content, section_start)
    local section_end = mw.ustring.find(content, "\n==[^=]", section_start + 1)
   
    if section_end then
        return mw.ustring.sub(content, section_start, section_end - 1)
    else
        return mw.ustring.sub(content, section_start)
    end
end
local function count_facts(section_content)
    local count = 0
    for line in mw.ustring.gmatch(section_content, "[^\n]+") do
        if mw.ustring.match(line, "^%*[^%*]") then
            count = count + 1
        end
    end
    return count
end
local function count_awards(section_content)
    local count = 0
    for _ in mw.ustring.gmatch(section_content, "%[%[File:[^%]]+%.png") do
        count = count + 1
    end
    return count
end
-- Секції, які треба ігнорувати в меню
local function should_skip_section(section_name)
    local skip_patterns = {
        "Записи ігор",
        "Ігри гравця"
    }
   
    for _, pattern in ipairs(skip_patterns) do
        if mw.ustring.match(section_name, pattern) then
            return true
        end
    end
   
    return false
end
end


Рядок 41: Рядок 84:
                 local processed = frame:preprocess(section_name)
                 local processed = frame:preprocess(section_name)
                 processed = mw.text.trim(processed)
                 processed = mw.text.trim(processed)
                local anchor = mw.ustring.gsub(processed, " ", "_")
                  
                  
                 if processed ~= "" then
                -- Пропускаємо секції з ігор
                    table.insert(sections, {
                 if not should_skip_section(processed) then
                        display = processed,
                    local anchor = mw.ustring.gsub(processed, " ", "_")
                        anchor = anchor
                    local display = processed
                    })
                   
                    local section_pos = mw.ustring.find(content, line, 1, true)
                   
                    if section_pos then
                        local section_content = get_section_content(content, section_pos)
                       
                        if mw.ustring.match(processed, "Цікаві факти") then
                            local facts_count = count_facts(section_content)
                            if facts_count > 0 then
                                display = processed .. " (" .. facts_count .. ")"
                            end
                        elseif mw.ustring.match(processed, "Нагороди") then
                            local awards_count = count_awards(section_content)
                            if awards_count > 0 then
                                display = processed .. " (" .. awards_count .. ")"
                            end
                        end
                    end
                   
                    if processed ~= "" then
                        table.insert(sections, {
                            display = display,
                            anchor = anchor
                        })
                    end
                 end
                 end
             end
             end