„Modul:SimpleTaxobox” változatai közötti eltérés
Megjelenés
Nincs szerkesztési összefoglaló Címke: Kézi visszaállítás |
Nincs szerkesztési összefoglaló |
||
| 16. sor: | 16. sor: | ||
local hierarchy = {} | local hierarchy = {} | ||
local taxon = currentTaxon | local taxon = currentTaxon | ||
local parentOverride = args.parent | |||
if not currentTaxon then | if not currentTaxon then | ||
| 31. sor: | 32. sor: | ||
else | else | ||
-- 1b. Nem talált adatot a Modul:TaxonData-ban. Feltételezzük, hogy FAJ. | -- 1b. Nem talált adatot a Modul:TaxonData-ban. Feltételezzük, hogy FAJ. | ||
if taxon == currentTaxon then | --if taxon == currentTaxon then | ||
-- Csak a legelső elem esetén végezzük el a szétválasztást | -- Csak a legelső elem esetén végezzük el a szétválasztást | ||
local genus_name = extract_genus(currentTaxon) | --local genus_name = extract_genus(currentTaxon) | ||
-- Hozzáadjuk magát a fajt a hierarchiához (a Nemzetség lesz a szülő) | -- Hozzáadjuk magát a fajt a hierarchiához (a Nemzetség lesz a szülő) | ||
table.insert(hierarchy, { rank = "Faj", name = currentTaxon }) | --table.insert(hierarchy, { rank = "Faj", name = currentTaxon }) | ||
taxon = genus_name -- Áttérünk a Nemzetségre | --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 | |||
-- Ellenőrizzük, hogy manuálisan megadtuk-e a szülőt (parentOverride) | |||
if parentOverride and parentOverride ~= '' then | |||
actual_parent = parentOverride | |||
else | |||
-- Különben az automata nemzetség felismerést használjuk | |||
-- (feltételezve, hogy az extract_genus függvény létezik) | |||
actual_parent = extract_genus(startTaxonID) | |||
end | |||
-- Hozzáadjuk magát a fajt a hierarchiához | |||
table.insert(hierarchy, { rank = "Faj", name = startTaxonID }) | |||
-- Áttérünk a Nemzetségre VAGY a Szekcióra | |||
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 (Hiba, vagy elértük a lánc végét a Nemzetség felett) | ||
A lap 2025. november 23., 14:09-kori változata
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
local parentOverride = args.parent
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
-- 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
-- Ellenőrizzük, hogy manuálisan megadtuk-e a szülőt (parentOverride)
if parentOverride and parentOverride ~= '' then
actual_parent = parentOverride
else
-- Különben az automata nemzetség felismerést használjuk
-- (feltételezve, hogy az extract_genus függvény létezik)
actual_parent = extract_genus(startTaxonID)
end
-- Hozzáadjuk magát a fajt a hierarchiához
table.insert(hierarchy, { rank = "Faj", name = startTaxonID })
-- Áttérünk a Nemzetségre VAGY a Szekcióra
taxon = actual_parent
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