„Modul:SimpleTaxobox” változatai közötti eltérés
Megjelenés
Nincs szerkesztési összefoglaló Címke: Visszaállítva |
Nincs szerkesztési összefoglaló Címkék: Kézi visszaállítás Visszaállítva |
||
| 1. sor: | 1. sor: | ||
-- Modul:SimpleTaxobox | -- Modul:SimpleTaxobox (A logikai motor a Modul:TaxonData használatával) | ||
local p = {} | local p = {} | ||
-- | -- Betölti a központi adatmodult, amiben a hierarchia szerepel. | ||
local TaxonData = require('Modul:TaxonData') | |||
local | |||
function p.buildTaxobox(frame) | |||
local args = frame:getParent().args | |||
local | local currentTaxon = args.taxon | ||
if not | local hierarchy = {} | ||
return | local taxon = currentTaxon | ||
if not currentTaxon then | |||
return "'''Taxobox Hiba:''' Hiányzó taxon paraméter." | |||
end | end | ||
-- | -- 1. Rekurzív adatgyűjtés a Modul:TaxonData-ból | ||
while | while taxon do | ||
local | local data = TaxonData.getData(taxon) -- Itt történik az adatkiolvasás | ||
-- A legalsó szint (faj) esetén a szülő adatot először nem a táblából olvassuk ki, | |||
table.insert( | -- hanem a 'data' változó tartalmazza a rangot és a szülőt a rekurzióhoz. | ||
break | if data then | ||
table.insert(hierarchy, { | |||
rank = data.rank, | |||
name = taxon | |||
}) | |||
taxon = data.parent -- Áttérés a szülőre (PARENT_ID) | |||
else | |||
-- Ha a legalsó szintnél nincs 'data' (vagy a lánc vége/hiba) | |||
-- és van már eleme a hierarchiának, akkor megállunk. | |||
if #hierarchy > 0 then | |||
break | |||
else | |||
-- Ha a legelső elemre sincs adat, hiba. | |||
return 'Taxobox Hiba: Nem található adat a "' .. currentTaxon .. '" taxonhoz a Modul:TaxonData-ban.' | |||
end | |||
end | 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' | |||
-- | |||
local | |||
-- A hierarchia fordított sorrendben van (fajtól a Doménig). Felülről lefelé haladunk. | |||
for i = #hierarchy, 1, -1 do | |||
local item = hierarchy[i] | |||
-- | |||
for i | |||
local | |||
local name_display = item.name | |||
-- Kiemeljük az aktuális cikk tárgyát (ami a hierarchia legalján van) | |||
if i == 1 then | |||
name_display = "'''" .. name_display .. "'''" | |||
if | |||
end | end | ||
output = output .. '|-\n' | |||
output = output .. '| style="text-align: right;" | ' .. item.rank .. '\n' | |||
output = output .. '| ' .. name_display .. '\n' | |||
end | end | ||
output = output .. '|}\n' | |||
return | return output | ||
end | end | ||
return p | return p | ||
A lap 2025. november 23., 12:53-kori változata
A modult a Modul:SimpleTaxobox/doc lapon tudod dokumentálni
-- Modul:SimpleTaxobox (A logikai motor a Modul:TaxonData használatával)
local p = {}
-- Betölti a központi adatmodult, amiben a hierarchia szerepel.
local TaxonData = require('Modul:TaxonData')
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) -- Itt történik az adatkiolvasás
-- A legalsó szint (faj) esetén a szülő adatot először nem a táblából olvassuk ki,
-- hanem a 'data' változó tartalmazza a rangot és a szülőt a rekurzióhoz.
if data then
table.insert(hierarchy, {
rank = data.rank,
name = taxon
})
taxon = data.parent -- Áttérés a szülőre (PARENT_ID)
else
-- Ha a legalsó szintnél nincs 'data' (vagy a lánc vége/hiba)
-- és van már eleme a hierarchiának, akkor megállunk.
if #hierarchy > 0 then
break
else
-- Ha a legelső elemre sincs adat, hiba.
return 'Taxobox Hiba: Nem található adat a "' .. currentTaxon .. '" taxonhoz a Modul:TaxonData-ban.'
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 (fajtól a Doménig). 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 i == 1 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