„Modul:CactaceaeTaxonSzinonimák” változatai közötti eltérés
Megjelenés
Új oldal, tartalma: „local p = {} -- Segédfüggvény a szóközök eltávolítására a szélekről local function trim(s) return s:match("^%s*(.-)%s*$") 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 -- Adatok betöltése a másik modulból local dataModul = require("Modul:CactaceaeTaxonokData") local nyersAdat = dataModul.ge…” |
Nincs szerkesztési összefoglaló |
||
| 1. sor: | 1. sor: | ||
local p = {} | local p = {} | ||
-- Segédfüggvény a | -- Segédfüggvény a nevek megtisztítására a számoktól és szóközöktől | ||
local function | local function cleanName(s) | ||
return s: | if not s then return "" end | ||
-- Eltávolítja a számokat és a kettőskeresztet a név végéről, majd trimmeli | |||
local cleaned = s:gsub("%d+ *#*", ""):gsub("%d+", "") | |||
return mw.text.trim(cleaned) | |||
end | end | ||
| 10. sor: | 13. sor: | ||
if not keresettTaxon or keresettTaxon == "" then return "Nincs megadva taxon!" end | if not keresettTaxon or keresettTaxon == "" then return "Nincs megadva taxon!" end | ||
local dataModul = require("Modul:CactaceaeTaxonokData") | local dataModul = require("Modul:CactaceaeTaxonokData") | ||
local nyersAdat = dataModul.getAdatok() | local nyersAdat = dataModul.getAdatok() | ||
for sor in nyersAdat:gmatch("[^\r\n]+") do | for sor in nyersAdat:gmatch("[^\r\n]+") do | ||
-- | -- Keressük a taxont 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 | -- Érvényes név kinyerése (a sor elején az első szám után) | ||
local ervenyesNevNyers = sor:match("%d+ ([^#:=≡%-]+)") | |||
local | local ervenyesNev = cleanName(ervenyesNevNyers) | ||
ervenyesNev = | |||
-- Szinonimák | -- Szinonimák feldolgozása | ||
local | local csoportok = {} | ||
-- | -- A sor többi részét daraboljuk fel a szinonima jelek mentén | ||
-- A | -- A gmatch itt a jelet és az utána következő szöveget nézi a következő jelig | ||
for jel, | for jel, szoveg in sor:gmatch("([≡=%-])%s*([^≡=%-]+)") do | ||
local tisztaNev = cleanName(szoveg) | |||
if jel == "≡" then | |||
-- Homotipikus szinonima: fűzzük az utolsó csoporthoz, ha az is ≡ volt | |||
if #csoportok > 0 and csoportok[#csoportok].jel == "≡" then | |||
table.insert(csoportok[#csoportok].nevek, tisztaNev) | |||
else | |||
table.insert(csoportok, {jel = "≡", nevek = {tisztaNev}}) | |||
end | |||
else | |||
-- Heterotipikus (=) vagy hibás (-) név: új sor | |||
table.insert(csoportok, {jel = jel, nevek = {tisztaNev}}) | |||
end | |||
end | end | ||
-- | -- Kimenet összeállítása | ||
if ervenyesNev then | if ervenyesNev ~= "" then | ||
local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n" | local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n" | ||
for _, | for _, csop in ipairs(csoportok) do | ||
local nevekDolt = {} | |||
for _, n in ipairs(csop.nevek) do | |||
table.insert(nevekDolt, "''" .. n .. "''") | |||
end | end | ||
-- Az azonos típushoz tartozókat " ≡ " jellel kötjük össze egy soron belül | |||
eredmeny = eredmeny .. "* | eredmeny = eredmeny .. "* " .. csop.jel .. " " .. table.concat(nevekDolt, " ≡ ") .. "\n" | ||
end | end | ||
return eredmeny | return eredmeny | ||
end | end | ||
| 47. sor: | 62. sor: | ||
end | end | ||
return "A megadott taxon (''" .. keresettTaxon .. "'') nem található | return "A megadott taxon (''" .. keresettTaxon .. "'') nem található." | ||
end | end | ||
return p | return p | ||
A lap 2026. január 11., 12:21-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 és 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 a név végéről, majd trimmeli
local cleaned = s:gsub("%d+ *#*", ""):gsub("%d+", "")
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 taxont a sorban
if sor:find(keresettTaxon, 1, true) then
-- É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)
-- Szinonimák feldolgozása
local csoportok = {}
-- A sor többi részét daraboljuk fel a szinonima jelek mentén
-- A gmatch itt a jelet és az utána következő szöveget nézi a következő jelig
for jel, szoveg in sor:gmatch("([≡=%-])%s*([^≡=%-]+)") do
local tisztaNev = cleanName(szoveg)
if jel == "≡" then
-- Homotipikus szinonima: fűzzük az utolsó csoporthoz, ha az is ≡ volt
if #csoportok > 0 and csoportok[#csoportok].jel == "≡" then
table.insert(csoportok[#csoportok].nevek, tisztaNev)
else
table.insert(csoportok, {jel = "≡", nevek = {tisztaNev}})
end
else
-- Heterotipikus (=) vagy hibás (-) név: új sor
table.insert(csoportok, {jel = jel, nevek = {tisztaNev}})
end
end
-- Kimenet összeállítása
if ervenyesNev ~= "" then
local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n"
for _, csop in ipairs(csoportok) do
local nevekDolt = {}
for _, n in ipairs(csop.nevek) do
table.insert(nevekDolt, "''" .. n .. "''")
end
-- Az azonos típushoz tartozókat " ≡ " jellel kötjük össze egy soron belül
eredmeny = eredmeny .. "* " .. csop.jel .. " " .. table.concat(nevekDolt, " ≡ ") .. "\n"
end
return eredmeny
end
end
end
return "A megadott taxon (''" .. keresettTaxon .. "'') nem található."
end
return p