Ugrás a tartalomhoz

„Modul:CSVParser” változatai közötti eltérés

Innen: MKOE wiki
Nincs szerkesztési összefoglaló
Nincs szerkesztési összefoglaló
2. sor: 2. sor:


function p.megjelenit(frame)
function p.megjelenit(frame)
     -- Paraméter átvétele a sablonból (vagy közvetlen hívásból)
     -- Paraméterek átvétele a sablonból
     local szuro = frame.args[1] or frame:getParent().args[1]
     local args = frame.args[1] and frame.args or frame:getParent().args
   
    -- 1. paraméter: Szűrő (pl. Cactaceae)
    local szuro = args[1]
     if szuro then
     if szuro then
         szuro = szuro:gsub("^%s*(.-)%s*$", "%1"):lower() -- Tisztítás és kisbetűssé alakítás
         szuro = szuro:gsub("^%s*(.-)%s*$", "%1"):lower()
         if szuro == "" then szuro = nil end
         if szuro == "" then szuro = nil end
     end
     end
    -- 2. paraméter: Oldalankénti sorok száma (alapértelmezett: 50)
    local sor_limit = tonumber(args[2]) or 50


     local status, adatModul = pcall(require, 'Modul:SzukkulensTaxonok')
     local status, adatModul = pcall(require, 'Modul:SzukkulensTaxonok')
21. sor: 27. sor:
     end
     end


     local res = '{| class="wikitable sortable datatable-hook" style="width:100%; font-size:90%;"\n'
    -- A 'data-page-length' attribútum állítja be az alapértelmezett oldalhosszt
     local res = '{| class="wikitable sortable datatable-hook" data-page-length="' .. sor_limit .. '" style="width:100%; font-size:90%;"\n'
      
      
     local megjelenitett_sorok_szama = 0
     local megjelenitett_sorok_szama = 0
      
      
     for i, sor in ipairs(adatok) do
     for i, sor in ipairs(adatok) do
        -- Szűrés logikája:
        -- A fejlécet (i=1) mindig megjelenítjük.
        -- Ha van szűrő, ellenőrizzük, hogy a sor bármelyik cellájában szerepel-e a keresett szó.
         local megfelel = false
         local megfelel = false
         if i == 1 then
         if i == 1 then
35. sor: 39. sor:
             megfelel = true
             megfelel = true
         else
         else
            -- Végigmegyünk a sor minden elemén és keressük a szűrőt
             for _, cella in ipairs(sor) do
             for _, cella in ipairs(sor) do
                 if cella:lower():find(szuro, 1, true) then
                 if cella:lower():find(szuro, 1, true) then
48. sor: 51. sor:
             local jel = (i == 1) and "!" or "|"
             local jel = (i == 1) and "!" or "|"
              
              
            -- 1. Sorszám oszlop (a fejlécben '#' marad, adatoknál az aktuális találat száma)
             if i == 1 then
             if i == 1 then
                 res = res .. "! #\n"
                 res = res .. "! #\n"
56. sor: 58. sor:
             end
             end
              
              
            -- 2. Összevont oszlopok meghatározása
             local oszlop_terv = {
             local oszlop_terv = {
                 {lat = 1, hun = 2}, -- Rend
                 {lat = 1, hun = 2}, {lat = 3, hun = 4}, {lat = 5, hun = 6},
                {lat = 3, hun = 4}, -- Család
                 {lat = 7, hun = nil}, {lat = 8, hun = nil}, {lat = 9, hun = 10}
                {lat = 5, hun = 6}, -- Alcsalád
                 {lat = 7, hun = nil}, -- Tribus
                {lat = 8, hun = nil}, -- Subtribus
                {lat = 9, hun = 10} -- Nemzetség
             }
             }
              
              
69. sor: 66. sor:
                 local latin = sor[mapping.lat] or ""
                 local latin = sor[mapping.lat] or ""
                 local magyar = mapping.hun and sor[mapping.hun] or ""
                 local magyar = mapping.hun and sor[mapping.hun] or ""
               
                 latin = latin:gsub("^%s*(.-)%s*$", "%1")
                 latin = latin:gsub("^%s*(.-)%s*$", "%1")
                 magyar = magyar:gsub("^%s*(.-)%s*$", "%1")
                 magyar = magyar:gsub("^%s*(.-)%s*$", "%1")
                  
                  
                 local cella_ertek = ""
                 local cella_ertek = ""
               
                 if i == 1 then
                 if i == 1 then
                     cella_ertek = latin
                     cella_ertek = latin
83. sor: 78. sor:
                         local link_szoveg = latin
                         local link_szoveg = latin
                         if mapping.lat == 9 then link_szoveg = "''" .. latin .. "''" end
                         if mapping.lat == 9 then link_szoveg = "''" .. latin .. "''" end
                       
                         local link = "[[:Kategória:" .. latin .. "|" .. link_szoveg .. "]]"
                         local link = "[[:Kategória:" .. latin .. "|" .. link_szoveg .. "]]"
                       
                         if magyar ~= "" and magyar ~= " " then
                         if magyar ~= "" and magyar ~= " " then
                             cella_ertek = link .. " (" .. magyar .. ")"
                             cella_ertek = link .. " (" .. magyar .. ")"

A lap 2026. január 4., 19:51-kori változata

A modult a Modul:CSVParser/doc lapon tudod dokumentálni

local p = {}

function p.megjelenit(frame)
    -- Paraméterek átvétele a sablonból
    local args = frame.args[1] and frame.args or frame:getParent().args
    
    -- 1. paraméter: Szűrő (pl. Cactaceae)
    local szuro = args[1]
    if szuro then
        szuro = szuro:gsub("^%s*(.-)%s*$", "%1"):lower()
        if szuro == "" then szuro = nil end
    end

    -- 2. paraméter: Oldalankénti sorok száma (alapértelmezett: 50)
    local sor_limit = tonumber(args[2]) or 50

    local status, adatModul = pcall(require, 'Modul:SzukkulensTaxonok')
    
    if not status then 
        return "Hiba: A 'Modul:SzukkulensTaxonok' nem található!" 
    end
    
    local adatok = adatModul.getAdatok()
    
    if not adatok or #adatok == 0 then 
        return "Hiba: Az adatok üresek!" 
    end

    -- A 'data-page-length' attribútum állítja be az alapértelmezett oldalhosszt
    local res = '{| class="wikitable sortable datatable-hook" data-page-length="' .. sor_limit .. '" style="width:100%; font-size:90%;"\n'
    
    local megjelenitett_sorok_szama = 0
    
    for i, sor in ipairs(adatok) do
        local megfelel = false
        if i == 1 then
            megfelel = true
        elseif not szuro then
            megfelel = true
        else
            for _, cella in ipairs(sor) do
                if cella:lower():find(szuro, 1, true) then
                    megfelel = true
                    break
                end
            end
        end

        if megfelel then
            res = res .. "|-\n"
            local jel = (i == 1) and "!" or "|"
            
            if i == 1 then
                res = res .. "! #\n"
            else
                megjelenitett_sorok_szama = megjelenitett_sorok_szama + 1
                res = res .. "| " .. megjelenitett_sorok_szama .. "\n"
            end
            
            local oszlop_terv = {
                {lat = 1, hun = 2}, {lat = 3, hun = 4}, {lat = 5, hun = 6},
                {lat = 7, hun = nil}, {lat = 8, hun = nil}, {lat = 9, hun = 10}
            }
            
            for _, mapping in ipairs(oszlop_terv) do
                local latin = sor[mapping.lat] or ""
                local magyar = mapping.hun and sor[mapping.hun] or ""
                latin = latin:gsub("^%s*(.-)%s*$", "%1")
                magyar = magyar:gsub("^%s*(.-)%s*$", "%1")
                
                local cella_ertek = ""
                if i == 1 then
                    cella_ertek = latin
                else
                    if latin == "" or latin == " " then
                        cella_ertek = " "
                    else
                        local link_szoveg = latin
                        if mapping.lat == 9 then link_szoveg = "''" .. latin .. "''" end
                        local link = "[[:Kategória:" .. latin .. "|" .. link_szoveg .. "]]"
                        if magyar ~= "" and magyar ~= " " then
                            cella_ertek = link .. " (" .. magyar .. ")"
                        else
                            cella_ertek = link
                        end
                    end
                end
                res = res .. jel .. " " .. cella_ertek .. "\n"
            end
        end
    end
    
    res = res .. "|}"
    return res
end

return p