Modul:CactaceaeTaxonSzinonimák
Megjelenés
A modult a Modul:CactaceaeTaxonSzinonimák/doc lapon tudod dokumentálni
local p = {}
-- Segédfüggvény a szóközök eltávolítására a szélekről
local function trim(s)
return s:match("^%s*(.-)%s*$")
end
function p.keres(frame)
local keresettTaxon = frame.args[1] or frame:getParent().args[1]
if not keresettTaxon or keresettTaxon == "" then return "Nincs megadva taxon!" end
-- Adatok betöltése a másik modulból
local dataModul = require("Modul:CactaceaeTaxonokData")
local nyersAdat = dataModul.getAdatok()
-- Soronkénti feldolgozás
for sor in nyersAdat:gmatch("[^\r\n]+") do
-- Megnézzük, szerepel-e a név a sorban (szimpla keresés, de ügyelve a határokra)
if sor:find(keresettTaxon, 1, true) then
-- Érvényes név kinyerése (a sor elején a szám után áll)
-- A sor felépítése: SZÁM Név (szinonimajel Név)* #
local ervenyesNev = sor:match("%d+ ([^#:=≡%-]+)")
ervenyesNev = trim(ervenyesNev)
-- Szinonimák kinyerése
local szinonimak = {}
-- Megkeressük az összes "jel Név" párost
-- A jelek: ≡ (homotipikus), = (heterotipikus), - (hibás név)
for jel, nev in sor:gmatch("([≡=%-])%s*([^#≡=%-]+)") do
table.insert(szinonimak, " " .. jel .. " ''" .. trim(nev) .. "''")
end
-- Ha találtunk érvényes nevet, összeállítjuk a kimenetet
if ervenyesNev then
local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n"
if #szinonimak > 0 then
for _, szin in ipairs(szinonimak) do
eredmeny = eredmeny .. "* " .. szin .. "\n"
end
else
eredmeny = eredmeny .. "* Nincsenek megadva szinonimák."
end
return eredmeny
end
end
end
return "A megadott taxon (''" .. keresettTaxon .. "'') nem található az adatbázisban."
end
return p