Ugrás a tartalomhoz

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

Innen: MKOE wiki
Nincs szerkesztési összefoglaló
Nincs szerkesztési összefoglaló
1. sor: 1. sor:
-- Modul:SimpleTaxobox (Frissítve: Fajnév automatikus szétválasztása)
-- Modul:SimpleTaxobox (Javított verzió)
local p = {}
local p = {}


7. sor: 7. sor:
-- Segédfüggvény: Kinyeri a nemzetség nevét a fajnévből (pl. "Echinocactus grusonii" -> "Echinocactus")
-- Segédfüggvény: Kinyeri a nemzetség nevét a fajnévből (pl. "Echinocactus grusonii" -> "Echinocactus")
local function extract_genus(full_species_name)
local function extract_genus(full_species_name)
     local genus_name = full_species_name:match("([^%s]+)") -- Kinyeri az első szót (szóközig)
    -- Kinyeri az első szót (szóközig)
     local genus_name = full_species_name:match("([^%s]+)")  
     return genus_name
     return genus_name
end
end
13. sor: 14. sor:
function p.buildTaxobox(frame)
function p.buildTaxobox(frame)
     local args = frame:getParent().args
     local args = frame:getParent().args
     local currentTaxon = args.taxon  
   
    -- A taxon neve, amit a cikkből kaptunk (ez lehet faj vagy nemzetség)
     local initialTaxon = args.taxon
   
     local hierarchy = {}
     local hierarchy = {}
     local taxon = currentTaxon
     local taxon = initialTaxon -- Ez a változó lépked felfelé a hierarchiában
     local parentOverride = args.parent
     local parentOverride = args.parent -- A manuálisan átadott szülő (pl. Szekció)


     if not currentTaxon then
     if not initialTaxon or initialTaxon == '' then
         return "'''Taxobox Hiba:''' Hiányzó taxon paraméter."
         return '<div style="color:red;">Taxobox Hiba: Hiányzó <code>|taxon=</code> paraméter.</div>'
     end
     end
      
      
27. sor: 31. sor:
          
          
         if data then
         if data then
             -- 1a. Talált adatot (Nemzetség, Család, Rend, Alfaj, stb.)
             -- 1a. Talált adatot (Rend, Család, Nemzetség, Szekció, stb.)
             table.insert(hierarchy, { rank = data.rank, name = taxon })
             table.insert(hierarchy, { rank = data.rank, name = taxon })
             taxon = data.parent -- Áttérés a szülőre
             taxon = data.parent -- Áttérés a szülőre
       
         else
         else
             -- 1b. Nem talált adatot a Modul:TaxonData-ban. Feltételezzük, hogy FAJ.
             -- 1b. Nem talált adatot. Ez a pont csak a legelső elemre lehet a Faj!
             --if taxon == currentTaxon then
             if taxon == initialTaxon then
                -- Csak a legelső elem esetén végezzük el a szétválasztást
                --local genus_name = extract_genus(currentTaxon)
               
                -- Hozzáadjuk magát a fajt a hierarchiához (a Nemzetség lesz a szülő)
                --table.insert(hierarchy, { rank = "Faj", name = currentTaxon })
                --taxon = genus_name -- Áttérünk a Nemzetségre
                  
                  
-- 1b. Nem talált adatot a Modul:TaxonData-ban. Feltételezzük, hogy FAJ.
            if taxon == startTaxonID then
               
                -- Meghatározzuk a tényleges szülőt:
                 local actual_parent
                 local actual_parent
                  
                  
                 -- Ellenőrizzük, hogy manuálisan megadtuk-e a szülőt (parentOverride)
                 -- 1. Ellenőrizzük, van-e átadott szülő (parentOverride)
                 if parentOverride and parentOverride ~= '' then
                 if parentOverride and parentOverride ~= '' then
                     actual_parent = parentOverride  
                     actual_parent = parentOverride
                 else
                 else
                     -- Különben az automata nemzetség felismerést használjuk
                     -- 2. Különben kinyerjük a nemzetséget a fajnévből (automatikusan)
                    -- (feltételezve, hogy az extract_genus függvény létezik)
                     actual_parent = extract_genus(initialTaxon)
                     actual_parent = extract_genus(startTaxonID)
                 end
                 end
                  
                  
                 -- Hozzáadjuk magát a fajt a hierarchiához
                 -- Hozzáadjuk magát a fajt a hierarchiához
                 table.insert(hierarchy, { rank = "Faj", name = startTaxonID })
                 table.insert(hierarchy, { rank = "Faj", name = initialTaxon })
                  
                  
                 -- Áttérünk a Nemzetségre VAGY a Szekcióra
                 -- Áttérünk a Nemzetségre VAGY a Szekcióra
                 taxon = actual_parent              
                 taxon = actual_parent
           
             else
             else
                 -- Nem a legelső elem, és nincs adat (Hiba, vagy elértük a lánc végét a Nemzetség felett)
                 -- Nem a legelső elem, és nincs adat (a lánc megszakad)
                 break
                 return '<div style="color:red;">Taxobox Hiba: Nem található adat a "' .. taxon .. '" taxonhoz a Modul:TaxonData-ban.</div>'
             end
             end
         end
         end
     end
     end
      
      
     -- 2. Wikitext Taxobox táblázat felépítése
     -- 2. Wikitext Taxobox táblázat felépítése (a régebbi kód, de javított változónevekkel)
     local output = '{| class="infobox biota" style="text-align: left; width: 20em;"\n'
     local output = '{| class="infobox biota" style="text-align: left; width: 20em;"\n'
     output = output .. '|+ Rendszertani besorolás\n'
     output = output .. '|+ Rendszertani besorolás\n'
76. sor: 71. sor:
          
          
         local name_display = item.name
         local name_display = item.name
       
         -- Kiemeljük az aktuális cikk tárgyát (ami a hierarchia legalján van)
         -- Kiemeljük az aktuális cikk tárgyát (ami a hierarchia legalján van)
         if item.rank == "Faj" then  
         if item.rank == "Faj" then  

A lap 2025. november 23., 16:18-kori változata

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

-- Modul:SimpleTaxobox (Javított verzió)
local p = {}

-- Betölti a központi adatmodult, amiben a hierarchia szerepel.
local TaxonData = require('Modul:TaxonData')

-- Segédfüggvény: Kinyeri a nemzetség nevét a fajnévből (pl. "Echinocactus grusonii" -> "Echinocactus")
local function extract_genus(full_species_name)
    -- Kinyeri az első szót (szóközig)
    local genus_name = full_species_name:match("([^%s]+)") 
    return genus_name
end

function p.buildTaxobox(frame)
    local args = frame:getParent().args
    
    -- A taxon neve, amit a cikkből kaptunk (ez lehet faj vagy nemzetség)
    local initialTaxon = args.taxon
    
    local hierarchy = {}
    local taxon = initialTaxon -- Ez a változó lépked felfelé a hierarchiában
    local parentOverride = args.parent -- A manuálisan átadott szülő (pl. Szekció)

    if not initialTaxon or initialTaxon == '' then
        return '<div style="color:red;">Taxobox Hiba: Hiányzó <code>|taxon=</code> paraméter.</div>'
    end
    
    -- 1. Rekurzív adatgyűjtés a Modul:TaxonData-ból
    while taxon do
        local data = TaxonData.getData(taxon) 
        
        if data then
            -- 1a. Talált adatot (Rend, Család, Nemzetség, Szekció, stb.)
            table.insert(hierarchy, { rank = data.rank, name = taxon })
            taxon = data.parent -- Áttérés a szülőre
        
        else
            -- 1b. Nem talált adatot. Ez a pont csak a legelső elemre lehet a Faj!
            if taxon == initialTaxon then
                
                local actual_parent
                
                -- 1. Ellenőrizzük, van-e átadott szülő (parentOverride)
                if parentOverride and parentOverride ~= '' then
                    actual_parent = parentOverride
                else
                    -- 2. Különben kinyerjük a nemzetséget a fajnévből (automatikusan)
                    actual_parent = extract_genus(initialTaxon)
                end
                
                -- Hozzáadjuk magát a fajt a hierarchiához
                table.insert(hierarchy, { rank = "Faj", name = initialTaxon })
                
                -- Áttérünk a Nemzetségre VAGY a Szekcióra
                taxon = actual_parent
            
            else
                -- Nem a legelső elem, és nincs adat (a lánc megszakad)
                return '<div style="color:red;">Taxobox Hiba: Nem található adat a "' .. taxon .. '" taxonhoz a Modul:TaxonData-ban.</div>'
            end
        end
    end
    
    -- 2. Wikitext Taxobox táblázat felépítése (a régebbi kód, de javított változónevekkel)
    local output = '{| class="infobox biota" style="text-align: left; width: 20em;"\n'
    output = output .. '|+ Rendszertani besorolás\n'
    
    -- A hierarchia fordított sorrendben van. Felülről lefelé haladunk.
    for i = #hierarchy, 1, -1 do
        local item = hierarchy[i]
        
        local name_display = item.name
        
        -- Kiemeljük az aktuális cikk tárgyát (ami a hierarchia legalján van)
        if item.rank == "Faj" then 
            name_display = "'''" .. name_display .. "'''"
        end
        
        output = output .. '|-\n'
        output = output .. '| style="text-align: right;" | ' .. item.rank .. '\n'
        output = output .. '| ' .. name_display .. '\n'
    end
    
    output = output .. '|}\n'
    
    return output
end

return p