„Modul:CactaceaeTaxonSzinonimák” változatai közötti eltérés
Megjelenés
Nincs szerkesztési összefoglaló |
Nincs szerkesztési összefoglaló |
||
| 1. sor: | 1. sor: | ||
local p = {} | local p = {} | ||
-- | -- Tisztító függvény: eltávolítja a számokat, kettőskereszteket és felesleges szóközöket | ||
local function cleanName(s) | local function cleanName(s) | ||
if not s then return "" end | if not s then return "" end | ||
local cleaned = s:gsub("%d+", ""):gsub("#", "") | local cleaned = s:gsub("%d+", ""):gsub("#", "") | ||
cleaned = mw.text.trim(cleaned) | |||
return cleaned | |||
end | end | ||
| 17. sor: | 17. sor: | ||
for sor in nyersAdat:gmatch("[^\r\n]+") do | for sor in nyersAdat:gmatch("[^\r\n]+") do | ||
if sor:find(keresettTaxon, 1, true) then | if sor:find(keresettTaxon, 1, true) then | ||
-- 1. Érvényes név kinyerése | -- 1. Érvényes név kinyerése | ||
local ervenyesNevNyers = sor:match("%d+ ([^#:=≡%-]+)") | local ervenyesNevNyers = sor:match("%d+ ([^#:=≡%-]+)") | ||
local ervenyesNev = cleanName(ervenyesNevNyers) | local ervenyesNev = cleanName(ervenyesNevNyers) | ||
-- 2. | -- 2. Szinonimák kigyűjtése | ||
-- | -- Először kivágjuk a szinonima részt (minden, ami az első # után van) | ||
local szinonimaResz = sor:match("#(.*)$") or "" | |||
local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n" | local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n" | ||
local lista = {} | |||
-- | -- A jelek mentén darabolunk, de megtartjuk a jeleket is | ||
-- Minta: (jel)(szöveg a következő jelig) | |||
for jel, nev in szinonimaResz:gmatch("([≡=%-])%s*([^≡=%-]+)") do | |||
local tisztaNev = cleanName(nev) | |||
-- | if tisztaNev ~= "" then | ||
if jel == "≡" and #lista > 0 and lista[#lista].tipus == "homotipikus" then | |||
-- Ha az előző is homotipikus volt, ehhez a sorhoz fűzzük | |||
table.insert(lista[#lista].nevek, tisztaNev) | |||
for | |||
local | |||
if | |||
else | else | ||
-- Új sort kezdünk (vagy mert heterotipikus, vagy mert az első elem) | |||
local tipus = (jel == "≡") and "homotipikus" or "egyeb" | |||
table.insert(lista, {jel = jel, nevek = {tisztaNev}, tipus = tipus}) | |||
end | end | ||
end | end | ||
end | end | ||
-- | |||
-- 3. Megjelenítés formázása | |||
eredmeny = eredmeny .. | 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 típusjellel (≡) | |||
local sorVeg = table.concat(formaltNevek, " ≡ ") | |||
eredmeny = eredmeny .. "* " .. elem.jel .. " " .. sorVeg .. "\n" | |||
end | end | ||
A lap 2026. január 11., 12:26-kori változata
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 felesleges szóközöket
local function cleanName(s)
if not s then return "" end
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()
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 kigyűjtése
-- Először kivágjuk a szinonima részt (minden, ami az első # után van)
local szinonimaResz = sor:match("#(.*)$") or ""
local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n"
local lista = {}
-- A jelek mentén darabolunk, de megtartjuk a jeleket is
-- Minta: (jel)(szöveg a következő jelig)
for jel, nev in szinonimaResz:gmatch("([≡=%-])%s*([^≡=%-]+)") do
local tisztaNev = cleanName(nev)
if tisztaNev ~= "" then
if jel == "≡" and #lista > 0 and lista[#lista].tipus == "homotipikus" then
-- Ha az előző is homotipikus volt, ehhez a sorhoz fűzzük
table.insert(lista[#lista].nevek, tisztaNev)
else
-- Új sort kezdünk (vagy mert heterotipikus, vagy mert az első elem)
local tipus = (jel == "≡") and "homotipikus" or "egyeb"
table.insert(lista, {jel = jel, nevek = {tisztaNev}, tipus = tipus})
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 típusjellel (≡)
local sorVeg = table.concat(formaltNevek, " ≡ ")
eredmeny = eredmeny .. "* " .. elem.jel .. " " .. sorVeg .. "\n"
end
return eredmeny
end
end
return "A megadott taxon nem található."
end
return p