„Modul:SimpleTaxobox” változatai közötti eltérés
Megjelenés
Nincs szerkesztési összefoglaló Címkék: Kézi visszaállítás Visszaállítva |
Nincs szerkesztési összefoglaló Címke: Kézi visszaállítás |
||
| 1. sor: | 1. sor: | ||
-- Modul:SimpleTaxobox ( | -- Modul:SimpleTaxobox (Frissítve: Fajnév automatikus szétválasztása) | ||
local p = {} | local p = {} | ||
-- Betölti a központi adatmodult, amiben a hierarchia szerepel. | -- Betölti a központi adatmodult, amiben a hierarchia szerepel. | ||
local TaxonData = require('Modul:TaxonData') | 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) | function p.buildTaxobox(frame) | ||
| 17. sor: | 23. sor: | ||
-- 1. Rekurzív adatgyűjtés a Modul:TaxonData-ból | -- 1. Rekurzív adatgyűjtés a Modul:TaxonData-ból | ||
while taxon do | while taxon do | ||
local data = TaxonData.getData(taxon) | local data = TaxonData.getData(taxon) | ||
if data then | if data then | ||
table.insert(hierarchy, { | -- 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 | |||
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. | ||
-- és | 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 | break | ||
end | end | ||
end | end | ||
| 43. sor: | 49. sor: | ||
output = output .. '|+ Rendszertani besorolás\n' | output = output .. '|+ Rendszertani besorolás\n' | ||
-- A hierarchia fordított sorrendben van | -- A hierarchia fordított sorrendben van. Felülről lefelé haladunk. | ||
for i = #hierarchy, 1, -1 do | for i = #hierarchy, 1, -1 do | ||
local item = hierarchy[i] | local item = hierarchy[i] | ||
| 49. sor: | 55. 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 | if item.rank == "Faj" then | ||
name_display = "'''" .. name_display .. "'''" | name_display = "'''" .. name_display .. "'''" | ||
end | end | ||
A lap 2025. november 23., 13:33-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
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