„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: számok, kettőskereszt és felesleges szóközök nélkül | -- 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 or s == "" then return "" end | if not s or s == "" then return "" end | ||
local cleaned = mw.ustring.gsub(s, "%d+ | local cleaned = mw.ustring.gsub(s, "[%d#@]+", "") | ||
return mw.text.trim(cleaned) | return mw.text.trim(cleaned) | ||
end | end | ||
| 32. sor: | 31. sor: | ||
local aktualisJel = "" | local aktualisJel = "" | ||
for cp in mw.ustring.gcodepoint(szinonimaResz) do | for cp in mw.ustring.gcodepoint(szinonimaResz) do | ||
local c = mw.ustring.char(cp) | local c = mw.ustring.char(cp) | ||
if c == "≡" or c == "=" or c == "-" then | if c == "≡" or c == "=" or c == "-" then | ||
if aktualisJel ~= "" then | if aktualisJel ~= "" then | ||
local tiszta = cleanName(aktualisNev) | local tiszta = cleanName(aktualisNev) | ||
if tiszta ~= "" then | if tiszta ~= "" then | ||
if | -- LOGIKA: Ha a jel ≡, akkor hozzáfűzzük az előzőhöz (akár = volt az, akár ≡) | ||
if c == "≡" and #lista > 0 then | |||
-- Ez a név még az előző jelhez tartozik, de a következő név már ≡ lesz | |||
table.insert(lista[#lista].nevek, tiszta) | |||
elseif aktualisJel == "≡" and #lista > 0 then | |||
table.insert(lista[#lista].nevek, tiszta) | table.insert(lista[#lista].nevek, tiszta) | ||
else | else | ||
table.insert(lista, { | table.insert(lista, { | ||
jel = (aktualisJel == "≡" and homoHTML or aktualisJel), | jel = (aktualisJel == "≡" and homoHTML or aktualisJel), | ||
nevek = {tiszta} | nevek = {tiszta} | ||
| 59. sor: | 59. sor: | ||
end | end | ||
-- | -- Utolsó név mentése | ||
if aktualisJel ~= "" then | if aktualisJel ~= "" then | ||
local tiszta = cleanName(aktualisNev) | local tiszta = cleanName(aktualisNev) | ||
if tiszta ~= "" then | if tiszta ~= "" then | ||
if aktualisJel == "≡" and #lista > 0 | if aktualisJel == "≡" and #lista > 0 then | ||
table.insert(lista[#lista].nevek, tiszta) | table.insert(lista[#lista].nevek, tiszta) | ||
else | else | ||
table.insert(lista, { | table.insert(lista, { | ||
jel = (aktualisJel == "≡" and homoHTML or aktualisJel), | jel = (aktualisJel == "≡" and homoHTML or aktualisJel), | ||
nevek = {tiszta} | nevek = {tiszta} | ||
| 77. sor: | 76. sor: | ||
-- 3. Megjelenítés | -- 3. Megjelenítés | ||
local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n" | local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n" | ||
for _, elem in ipairs(lista) do | for _, elem in ipairs(lista) do | ||
local formalt = {} | local formalt = {} | ||
| 84. sor: | 82. sor: | ||
table.insert(formalt, "''" .. n .. "''") | table.insert(formalt, "''" .. n .. "''") | ||
end | end | ||
local | -- A soron belüli neveket mindig ≡ jellel választjuk el | ||
eredmeny = eredmeny .. "* " .. elem.jel .. " " .. | local nevekSora = table.concat(formalt, " " .. homoHTML .. " ") | ||
eredmeny = eredmeny .. "* " .. elem.jel .. " " .. nevekSora .. "\n" | |||
end | end | ||
A lap 2026. január 11., 12:41-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 or s == "" then return "" end
local cleaned = mw.ustring.gsub(s, "[%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()
local homoHTML = "≡"
for sor in nyersAdat:gmatch("[^\r\n]+") do
if mw.ustring.find(sor, keresettTaxon, 1, true) then
-- 1. Érvényes név kinyerése
local ervenyesNevNyers = mw.ustring.match(sor, "%d+ ([^#:=≡%-]+)")
local ervenyesNev = cleanName(ervenyesNevNyers)
-- 2. Szinonimák feldolgozása karakterenként
local szinonimaResz = mw.ustring.match(sor, "#(.*)$") or ""
local lista = {}
local aktualisNev = ""
local aktualisJel = ""
for cp in mw.ustring.gcodepoint(szinonimaResz) do
local c = mw.ustring.char(cp)
if c == "≡" or c == "=" or c == "-" then
if aktualisJel ~= "" then
local tiszta = cleanName(aktualisNev)
if tiszta ~= "" then
-- LOGIKA: Ha a jel ≡, akkor hozzáfűzzük az előzőhöz (akár = volt az, akár ≡)
if c == "≡" and #lista > 0 then
-- Ez a név még az előző jelhez tartozik, de a következő név már ≡ lesz
table.insert(lista[#lista].nevek, tiszta)
elseif aktualisJel == "≡" and #lista > 0 then
table.insert(lista[#lista].nevek, tiszta)
else
table.insert(lista, {
jel = (aktualisJel == "≡" and homoHTML or aktualisJel),
nevek = {tiszta}
})
end
end
end
aktualisJel = c
aktualisNev = ""
else
aktualisNev = aktualisNev .. c
end
end
-- Utolsó név mentése
if aktualisJel ~= "" then
local tiszta = cleanName(aktualisNev)
if tiszta ~= "" then
if aktualisJel == "≡" and #lista > 0 then
table.insert(lista[#lista].nevek, tiszta)
else
table.insert(lista, {
jel = (aktualisJel == "≡" and homoHTML or aktualisJel),
nevek = {tiszta}
})
end
end
end
-- 3. Megjelenítés
local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n"
for _, elem in ipairs(lista) do
local formalt = {}
for _, n in ipairs(elem.nevek) do
table.insert(formalt, "''" .. n .. "''")
end
-- A soron belüli neveket mindig ≡ jellel választjuk el
local nevekSora = table.concat(formalt, " " .. homoHTML .. " ")
eredmeny = eredmeny .. "* " .. elem.jel .. " " .. nevekSora .. "\n"
end
return eredmeny
end
end
return "A megadott taxon nem található."
end
return p