„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 = {} | ||
-- Segédfüggvény a nevek megtisztítására a számoktól és szóközöktől | -- Segédfüggvény a nevek megtisztítására a számoktól, kettőskereszttől és felesleges szóközöktől | ||
local function cleanName(s) | local function cleanName(s) | ||
if not s then return "" end | if not s then return "" end | ||
-- Eltávolítja a számokat és a kettőskeresztet | -- Eltávolítja a számokat és a kettőskeresztet, majd a felesleges szóközöket | ||
local cleaned = s:gsub("%d+ | local cleaned = s:gsub("%d+", ""):gsub("#", "") | ||
return mw.text.trim(cleaned) | return mw.text.trim(cleaned) | ||
end | end | ||
| 17. sor: | 17. sor: | ||
for sor in nyersAdat:gmatch("[^\r\n]+") do | for sor in nyersAdat:gmatch("[^\r\n]+") do | ||
-- Keressük a | -- Keressük a keresett kifejezést a sorban | ||
if sor:find(keresettTaxon, 1, true) then | if sor:find(keresettTaxon, 1, true) then | ||
-- Érvényes név kinyerése (a sor elején az első szám után) | -- 1. Érvényes név kinyerése (a sor elején az első szám után) | ||
local ervenyesNevNyers = sor:match("%d+ ([^#:=≡%-]+)") | local ervenyesNevNyers = sor:match("%d+ ([^#:=≡%-]+)") | ||
local ervenyesNev = cleanName(ervenyesNevNyers) | local ervenyesNev = cleanName(ervenyesNevNyers) | ||
-- | -- 2. Szinonima-blokkok feldolgozása | ||
-- A sor többi részét daraboljuk fel a főbb elválasztójelek mentén (= vagy -) | |||
-- A sor többi részét daraboljuk fel a | -- A ≡ jelet belső elválasztónak használjuk | ||
-- A | local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n" | ||
for jel | |||
local | -- Eltávolítjuk a sor elejéről az érvényes nevet és az első számot | ||
local szinonimaResz = sor:gsub("^%d+ [^#]+#", "") | |||
if jel == "≡" then | |||
-- | -- Azokat a részeket keressük, amik = vagy - jellel kezdődnek, vagy az elején vannak ≡ jellel | ||
if | -- A logikát átalakítjuk: minden "=" vagy "-" új sort kezd. | ||
-- A "≡" jelekkel elválasztott neveket egy csoportba gyűjtjük. | |||
local sorok = {} | |||
-- Először szétvágjuk a heterotipikus (=) és hibás (-) jelek mentén | |||
-- De a ≡ jeleket megtartjuk a darabokon belül | |||
local utolsoPozicio = 1 | |||
for pozicio, jel in szinonimaResz:gmatch("()([=≡%-])") do | |||
local darab = szinonimaResz:sub(utolsoPozicio, pozicio - 1) | |||
if utolsoPozicio > 1 then | |||
local elozoJel = szinonimaResz:sub(utolsoPozicio - 1, utolsoPozicio - 1) | |||
table.insert(sorok, {jel = elozoJel, szoveg = cleanName(darab)}) | |||
end | |||
utolsoPozicio = pozicio + 1 | |||
end | |||
-- Utolsó darab hozzáadása | |||
local utolsoDarab = szinonimaResz:sub(utolsoPozicio) | |||
if utolsoPozicio > 1 then | |||
local elozoJel = szinonimaResz:sub(utolsoPozicio - 1, utolsoPozicio - 1) | |||
table.insert(sorok, {jel = elozoJel, szoveg = cleanName(utolsoDarab)}) | |||
end | |||
-- 3. Csoportosítás és kiírás | |||
local aktualisListaElem = "" | |||
for i, elem in ipairs(sorok) do | |||
if elem.jel == "≡" then | |||
-- Ha ez egy homotipikus szinonima, hozzáfűzzük az aktuális sorhoz | |||
if aktualisListaElem == "" then | |||
aktualisListaElem = "* ≡ ''" .. elem.szoveg .. "''" | |||
else | else | ||
aktualisListaElem = aktualisListaElem .. " ≡ ''" .. elem.szoveg .. "''" | |||
end | end | ||
else | else | ||
-- | -- Ha "=" vagy "-", akkor az eddigit kiírjuk, és újat kezdünk | ||
if aktualisListaElem ~= "" then | |||
eredmeny = eredmeny .. aktualisListaElem .. "\n" | |||
end | |||
aktualisListaElem = "* " .. elem.jel .. " ''" .. elem.szoveg .. "''" | |||
end | end | ||
end | |||
-- Az utolsó kint maradt elemet is hozzáadjuk | |||
if aktualisListaElem ~= "" then | |||
eredmeny = eredmeny .. aktualisListaElem .. "\n" | |||
end | end | ||
return eredmeny | |||
end | end | ||
end | end | ||
return "A megadott taxon | return "A megadott taxon nem található." | ||
end | end | ||
return p | return p | ||
A lap 2026. január 11., 12:24-kori változata
A modult a Modul:CactaceaeTaxonSzinonimák/doc lapon tudod dokumentálni
local p = {}
-- Segédfüggvény a nevek megtisztítására a számoktól, kettőskereszttől és felesleges szóközöktől
local function cleanName(s)
if not s then return "" end
-- Eltávolítja a számokat és a kettőskeresztet, majd a felesleges szóközöket
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()
for sor in nyersAdat:gmatch("[^\r\n]+") do
-- Keressük a keresett kifejezést a sorban
if sor:find(keresettTaxon, 1, true) then
-- 1. Érvényes név kinyerése (a sor elején az első szám után)
local ervenyesNevNyers = sor:match("%d+ ([^#:=≡%-]+)")
local ervenyesNev = cleanName(ervenyesNevNyers)
-- 2. Szinonima-blokkok feldolgozása
-- A sor többi részét daraboljuk fel a főbb elválasztójelek mentén (= vagy -)
-- A ≡ jelet belső elválasztónak használjuk
local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n"
-- Eltávolítjuk a sor elejéről az érvényes nevet és az első számot
local szinonimaResz = sor:gsub("^%d+ [^#]+#", "")
-- Azokat a részeket keressük, amik = vagy - jellel kezdődnek, vagy az elején vannak ≡ jellel
-- A logikát átalakítjuk: minden "=" vagy "-" új sort kezd.
-- A "≡" jelekkel elválasztott neveket egy csoportba gyűjtjük.
local sorok = {}
-- Először szétvágjuk a heterotipikus (=) és hibás (-) jelek mentén
-- De a ≡ jeleket megtartjuk a darabokon belül
local utolsoPozicio = 1
for pozicio, jel in szinonimaResz:gmatch("()([=≡%-])") do
local darab = szinonimaResz:sub(utolsoPozicio, pozicio - 1)
if utolsoPozicio > 1 then
local elozoJel = szinonimaResz:sub(utolsoPozicio - 1, utolsoPozicio - 1)
table.insert(sorok, {jel = elozoJel, szoveg = cleanName(darab)})
end
utolsoPozicio = pozicio + 1
end
-- Utolsó darab hozzáadása
local utolsoDarab = szinonimaResz:sub(utolsoPozicio)
if utolsoPozicio > 1 then
local elozoJel = szinonimaResz:sub(utolsoPozicio - 1, utolsoPozicio - 1)
table.insert(sorok, {jel = elozoJel, szoveg = cleanName(utolsoDarab)})
end
-- 3. Csoportosítás és kiírás
local aktualisListaElem = ""
for i, elem in ipairs(sorok) do
if elem.jel == "≡" then
-- Ha ez egy homotipikus szinonima, hozzáfűzzük az aktuális sorhoz
if aktualisListaElem == "" then
aktualisListaElem = "* ≡ ''" .. elem.szoveg .. "''"
else
aktualisListaElem = aktualisListaElem .. " ≡ ''" .. elem.szoveg .. "''"
end
else
-- Ha "=" vagy "-", akkor az eddigit kiírjuk, és újat kezdünk
if aktualisListaElem ~= "" then
eredmeny = eredmeny .. aktualisListaElem .. "\n"
end
aktualisListaElem = "* " .. elem.jel .. " ''" .. elem.szoveg .. "''"
end
end
-- Az utolsó kint maradt elemet is hozzáadjuk
if aktualisListaElem ~= "" then
eredmeny = eredmeny .. aktualisListaElem .. "\n"
end
return eredmeny
end
end
return "A megadott taxon nem található."
end
return p