„Modul:SimpleTaxobox” változatai közötti eltérés
Megjelenés
Nincs szerkesztési összefoglaló |
Nincs szerkesztési összefoglaló |
||
| 1. sor: | 1. sor: | ||
-- Modul:SimpleTaxobox ( | -- Modul:SimpleTaxobox (Javított verzió) | ||
local p = {} | local p = {} | ||
| 7. sor: | 7. sor: | ||
-- Segédfüggvény: Kinyeri a nemzetség nevét a fajnévből (pl. "Echinocactus grusonii" -> "Echinocactus") | -- 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 function extract_genus(full_species_name) | ||
local genus_name = full_species_name:match("([^%s]+)" | -- Kinyeri az első szót (szóközig) | ||
local genus_name = full_species_name:match("([^%s]+)") | |||
return genus_name | return genus_name | ||
end | end | ||
| 13. sor: | 14. sor: | ||
function p.buildTaxobox(frame) | function p.buildTaxobox(frame) | ||
local args = frame:getParent().args | local args = frame:getParent().args | ||
local | |||
-- A taxon neve, amit a cikkből kaptunk (ez lehet faj vagy nemzetség) | |||
local initialTaxon = args.taxon | |||
local hierarchy = {} | local hierarchy = {} | ||
local taxon = | local taxon = initialTaxon -- Ez a változó lépked felfelé a hierarchiában | ||
local parentOverride = args.parent | local parentOverride = args.parent -- A manuálisan átadott szülő (pl. Szekció) | ||
if not | if not initialTaxon or initialTaxon == '' then | ||
return " | return '<div style="color:red;">Taxobox Hiba: Hiányzó <code>|taxon=</code> paraméter.</div>' | ||
end | end | ||
| 27. sor: | 31. sor: | ||
if data then | if data then | ||
-- 1a. Talált adatot ( | -- 1a. Talált adatot (Rend, Család, Nemzetség, Szekció, stb.) | ||
table.insert(hierarchy, { rank = data.rank, name = taxon }) | 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 | -- 1b. Nem talált adatot. Ez a pont csak a legelső elemre lehet a Faj! | ||
if taxon == initialTaxon then | |||
local actual_parent | local actual_parent | ||
-- Ellenőrizzük, | -- 1. Ellenőrizzük, van-e átadott szülő (parentOverride) | ||
if parentOverride and parentOverride ~= '' then | if parentOverride and parentOverride ~= '' then | ||
actual_parent = parentOverride | actual_parent = parentOverride | ||
else | else | ||
-- Különben | -- 2. Különben kinyerjük a nemzetséget a fajnévből (automatikusan) | ||
actual_parent = extract_genus(initialTaxon) | |||
actual_parent = extract_genus( | |||
end | end | ||
-- Hozzáadjuk magát a fajt a hierarchiához | -- Hozzáadjuk magát a fajt a hierarchiához | ||
table.insert(hierarchy, { rank = "Faj", name = | table.insert(hierarchy, { rank = "Faj", name = initialTaxon }) | ||
-- Áttérünk a Nemzetségre VAGY a Szekcióra | -- Áttérünk a Nemzetségre VAGY a Szekcióra | ||
taxon = actual_parent | taxon = actual_parent | ||
else | else | ||
-- Nem a legelső elem, és nincs adat ( | -- Nem a legelső elem, és nincs adat (a lánc megszakad) | ||
return '<div style="color:red;">Taxobox Hiba: Nem található adat a "' .. taxon .. '" taxonhoz a Modul:TaxonData-ban.</div>' | |||
end | end | ||
end | end | ||
end | end | ||
-- 2. Wikitext Taxobox táblázat felépítése | -- 2. Wikitext Taxobox táblázat felépítése (a régebbi kód, de javított változónevekkel) | ||
local output = '{| class="infobox biota" style="text-align: left; width: 20em;"\n' | local output = '{| class="infobox biota" style="text-align: left; width: 20em;"\n' | ||
output = output .. '|+ Rendszertani besorolás\n' | output = output .. '|+ Rendszertani besorolás\n' | ||
| 76. sor: | 71. 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 item.rank == "Faj" then | if item.rank == "Faj" then | ||
A lap 2025. november 23., 16:18-kori változata
A modult a Modul:SimpleTaxobox/doc lapon tudod dokumentálni
-- Modul:SimpleTaxobox (Javított verzió)
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)
-- Kinyeri az első szót (szóközig)
local genus_name = full_species_name:match("([^%s]+)")
return genus_name
end
function p.buildTaxobox(frame)
local args = frame:getParent().args
-- A taxon neve, amit a cikkből kaptunk (ez lehet faj vagy nemzetség)
local initialTaxon = args.taxon
local hierarchy = {}
local taxon = initialTaxon -- Ez a változó lépked felfelé a hierarchiában
local parentOverride = args.parent -- A manuálisan átadott szülő (pl. Szekció)
if not initialTaxon or initialTaxon == '' then
return '<div style="color:red;">Taxobox Hiba: Hiányzó <code>|taxon=</code> paraméter.</div>'
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 (Rend, Család, Nemzetség, Szekció, 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. Ez a pont csak a legelső elemre lehet a Faj!
if taxon == initialTaxon then
local actual_parent
-- 1. Ellenőrizzük, van-e átadott szülő (parentOverride)
if parentOverride and parentOverride ~= '' then
actual_parent = parentOverride
else
-- 2. Különben kinyerjük a nemzetséget a fajnévből (automatikusan)
actual_parent = extract_genus(initialTaxon)
end
-- Hozzáadjuk magát a fajt a hierarchiához
table.insert(hierarchy, { rank = "Faj", name = initialTaxon })
-- Áttérünk a Nemzetségre VAGY a Szekcióra
taxon = actual_parent
else
-- Nem a legelső elem, és nincs adat (a lánc megszakad)
return '<div style="color:red;">Taxobox Hiba: Nem található adat a "' .. taxon .. '" taxonhoz a Modul:TaxonData-ban.</div>'
end
end
end
-- 2. Wikitext Taxobox táblázat felépítése (a régebbi kód, de javított változónevekkel)
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