Modul:CactaceaeTaxonSzinonimák
Megjelenés
A modult a Modul:CactaceaeTaxonSzinonimák/doc lapon tudod dokumentálni
local p = {}
-- Tisztító függvény: eltávolítja a számokat, kettőskereszteket és szóközöket
local function cleanName(s)
if not s then return "" end
-- Eltávolítja a számokat és a kettőskeresztet
local cleaned = s:gsub("%d+", ""):gsub("#", "")
cleaned = mw.text.trim(cleaned)
return cleaned
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
local dataModul = require("Modul:CactaceaeTaxonokData")
local nyersAdat = dataModul.getAdatok()
-- Definialjuk a jelek HTML kódjait a biztonság kedvéért
local jelek = {
["≡"] = "≡",
["="] = "=",
["-"] = "-"
}
for sor in nyersAdat:gmatch("[^\r\n]+") do
if sor:find(keresettTaxon, 1, true) then
-- 1. Érvényes név kinyerése
local ervenyesNevNyers = sor:match("%d+ ([^#:=≡%-]+)")
local ervenyesNev = cleanName(ervenyesNevNyers)
-- 2. Szinonimák kinyerése a sorból
local szinonimaResz = sor:match("#(.*)$") or ""
local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n"
local lista = {}
-- A jelek mentén darabolunk
for jel, nev in szinonimaResz:gmatch("([≡=%-])%s*([^≡=%-]+)") do
local tisztaNev = cleanName(nev)
if tisztaNev ~= "" then
-- Ha homotipikus (≡) és az előző is az volt, egy sorba gyűjtjük
if jel == "≡" and #lista > 0 and lista[#lista].eredetiJel == "≡" then
table.insert(lista[#lista].nevek, tisztaNev)
else
-- Új listapontot kezdünk
table.insert(lista, {
eredetiJel = jel,
megjelenitettJel = jelek[jel] or jel,
nevek = {tisztaNev}
})
end
end
end
-- 3. Megjelenítés formázása
for _, elem in ipairs(lista) do
local formaltNevek = {}
for _, n in ipairs(elem.nevek) do
table.insert(formaltNevek, "''" .. n .. "''")
end
-- Összefűzzük a neveket a homotipikus jellel (≡) a soron belül
local sorVeg = table.concat(formaltNevek, " " .. jelek["≡"] .. " ")
eredmeny = eredmeny .. "* " .. elem.megjelenitettJel .. " " .. sorVeg .. "\n"
end
return eredmeny
end
end
return "A megadott taxon nem található."
end
return p