Modul:CactaceaeTaxonSzinonimák
Megjelenés
A modult a Modul:CactaceaeTaxonSzinonimák/doc lapon tudod dokumentálni
local p = {}
-- Tisztító függvény: számok, kettőskereszt és felesleges szóközök nélkül
local function cleanName(s)
if not s then return "" end
local cleaned = s:gsub("%d+", ""):gsub("#", "")
return mw.text.trim(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()
-- HTML entitás a biztos megjelenítéshez
local homoJel = "≡"
for sor in nyersAdat:gmatch("[^\r\n]+") do
if sor:find(keresettTaxon, 1, true) then
-- 1. Érvényes név (első szám utáni rész)
local ervenyesNevNyers = sor:match("%d+ ([^#:=≡%-]+)")
local ervenyesNev = cleanName(ervenyesNevNyers)
-- 2. ELŐKEZELÉS: Lecseréljük a problémás karaktert egy biztonságos szóra
local biztonsagosSor = sor:gsub("≡", " HOMOSZIN ")
-- Kivágjuk a szinonima részt
local szinonimaResz = biztonsagosSor:match("#(.*)$") or ""
local lista = {}
-- Itt már csak =, - és a biztonságos szavunk mentén darabolunk
for jel, nev in szinonimaResz:gmatch("([=%-]|HOMOSZIN)%s*([^=%-H]+)") do
-- (A minta kicsit egyszerűsítve, hogy ne akadjon el a H betűnél)
end
-- Mivel a fenti gmatch trükkös a szóval, használjuk a split/iterációt:
local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n"
-- Daraboljuk fel a sort a jelek mentén, de tartsuk meg a jeleket
-- Új stratégia: minden jelet egyformára alakítunk, hogy könnyen daraboljunk
local feldolgozott = szinonimaResz:gsub("HOMOSZIN", "§≡"):gsub("=", "§="):gsub("%-", "§-")
local utolsoTipus = ""
for resz in feldolgozott:gmatch("§([^§]+)") do
local jel = resz:sub(1,1)
local nev = cleanName(resz:sub(2))
if nev ~= "" then
if jel == "≡" and #lista > 0 and lista[#lista].tipus == "homo" then
table.insert(lista[#lista].nevek, nev)
else
table.insert(lista, {
tipus = (jel == "≡" and "homo" or "egyeb"),
jel = (jel == "≡" and homoJel or jel),
nevek = {nev}
})
end
end
end
-- 3. Összeállítás
for _, elem in ipairs(lista) do
local formaltNevek = {}
for _, n in ipairs(elem.nevek) do
table.insert(formaltNevek, "''" .. n .. "''")
end
local sorVeg = table.concat(formaltNevek, " " .. homoJel .. " ")
eredmeny = eredmeny .. "* " .. elem.jel .. " " .. sorVeg .. "\n"
end
return eredmeny
end
end
return "A megadott taxon nem található."
end
return p