Modul:SimpleTaxobox
Megjelenés
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