„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: | -- Tisztító függvény: számok, kettőskereszt és felesleges szóközök nélkül | ||
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("#", "") | ||
return mw.text.trim(cleaned) | |||
end | end | ||
| 16. sor: | 15. sor: | ||
local nyersAdat = dataModul.getAdatok() | local nyersAdat = dataModul.getAdatok() | ||
-- | -- HTML entitás a biztos megjelenítéshez | ||
local | local homoJel = "≡" | ||
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 | -- 1. Érvényes név (első szám utáni rész) | ||
local ervenyesNevNyers = sor:match("%d+ ([^#:=≡%-]+)") | local ervenyesNevNyers = sor:match("%d+ ([^#:=≡%-]+)") | ||
local ervenyesNev = cleanName(ervenyesNevNyers) | local ervenyesNev = cleanName(ervenyesNevNyers) | ||
-- 2. | -- 2. ELŐKEZELÉS: Lecseréljük a problémás karaktert egy biztonságos szóra | ||
local | 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" | 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 | local feldolgozott = szinonimaResz:gsub("HOMOSZIN", "§≡"):gsub("=", "§="):gsub("%-", "§-") | ||
for | local utolsoTipus = "" | ||
local | for resz in feldolgozott:gmatch("§([^§]+)") do | ||
if | 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, | table.insert(lista[#lista].nevek, nev) | ||
else | else | ||
table.insert(lista, { | table.insert(lista, { | ||
tipus = (jel == "≡" and "homo" or "egyeb"), | |||
jel = (jel == "≡" and homoJel or jel), | |||
nevek = { | nevek = {nev} | ||
}) | }) | ||
end | end | ||
| 55. sor: | 62. sor: | ||
end | end | ||
-- 3. | -- 3. Összeállítás | ||
for _, elem in ipairs(lista) do | for _, elem in ipairs(lista) do | ||
local formaltNevek = {} | local formaltNevek = {} | ||
| 61. sor: | 68. sor: | ||
table.insert(formaltNevek, "''" .. n .. "''") | table.insert(formaltNevek, "''" .. n .. "''") | ||
end | end | ||
local sorVeg = table.concat(formaltNevek, " " .. homoJel .. " ") | |||
local sorVeg = table.concat(formaltNevek, " " .. | eredmeny = eredmeny .. "* " .. elem.jel .. " " .. sorVeg .. "\n" | ||
eredmeny = eredmeny .. "* " .. elem. | |||
end | end | ||
A lap 2026. január 11., 12:33-kori változata
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