Ugrás a tartalomhoz

Modul:SimpleTaxobox

Innen: MKOE wiki
A lap korábbi változatát látod, amilyen Dr. Gyúró Zoltán (vitalap | szerkesztései) 2025. november 23., 12:35-kor történt szerkesztése után volt.

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

-- Modul:SimpleTaxobox (Frissítve: Fajnév automatikus szétválasztása)
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)
    local genus_name = full_species_name:match("([^%s]+)") -- Kinyeri az első szót (szóközig)
    return genus_name
end

function p.buildTaxobox(frame)
    local args = frame:getParent().args
    local currentTaxon = args.taxon 
    local hierarchy = {}
    local taxon = currentTaxon

    if not currentTaxon then
        return "'''Taxobox Hiba:''' Hiányzó taxon paraméter."
    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 (Nemzetség, Család, Rend, Alfaj, 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 a Modul:TaxonData-ban. Feltételezzük, hogy FAJ.
            if taxon == currentTaxon 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
            else
                -- Nem a legelső elem, és nincs adat (Hiba, vagy elértük a lánc végét a Nemzetség felett)
                break
            end
        end
    end
    
    -- 2. Wikitext Taxobox táblázat felépítése
    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