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

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


Рядок 19: Рядок 18:
end
end


local function count_facts(content, section_start)
local function get_section_content(content, section_start)
     local section_end = mw.ustring.find(content, "\n==[^=]", section_start + 1)
     local section_end = mw.ustring.find(content, "\n==[^=]", section_start + 1)
    local section_content
      
      
     if section_end then
     if section_end then
         section_content = mw.ustring.sub(content, section_start, section_end - 1)
         return mw.ustring.sub(content, section_start, section_end - 1)
     else
     else
         section_content = mw.ustring.sub(content, section_start)
         return mw.ustring.sub(content, section_start)
     end
     end
   
end
 
local function count_facts(section_content)
     local count = 0
     local count = 0
     for line in mw.ustring.gmatch(section_content, "[^\n]+") do
     for line in mw.ustring.gmatch(section_content, "[^\n]+") do
         if mw.ustring.match(line, "^%*[^%*]") then
         if mw.ustring.match(line, "^%*[^%*]") then
             count = count + 1
             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
     end
     end
      
      
     return count
     return false
end
end


Рядок 61: Рядок 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, " ", "_")
                local display = processed
                  
                  
                 if mw.ustring.match(processed, "Цікаві факти") then
                -- Пропускаємо секції з ігор
                 if not should_skip_section(processed) then
                    local anchor = mw.ustring.gsub(processed, " ", "_")
                    local display = processed
                   
                     local section_pos = mw.ustring.find(content, line, 1, true)
                     local section_pos = mw.ustring.find(content, line, 1, true)
                   
                     if section_pos then
                     if section_pos then
                         local facts_count = count_facts(content, section_pos)
                         local section_content = get_section_content(content, section_pos)
                         if facts_count > 0 then
                       
                             display = processed .. " (" .. facts_count .. ")"
                         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
                     end
                     end
                end
                   
               
                    if processed ~= "" then
                if processed ~= "" then
                        table.insert(sections, {
                    table.insert(sections, {
                            display = display,
                        display = display,
                            anchor = anchor
                        anchor = anchor
                        })
                    })
                    end
                 end
                 end
             end
             end