„Modul:CactaceaeTaxonSzinonimák” változatai közötti eltérés
Megjelenés
Nincs szerkesztési összefoglaló |
Nincs szerkesztési összefoglaló |
||
| 4. sor: | 4. sor: | ||
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) | cleaned = mw.text.trim(cleaned) | ||
| 17. sor: | 16. sor: | ||
local nyersAdat = dataModul.getAdatok() | local nyersAdat = dataModul.getAdatok() | ||
-- | -- Meghatározzuk a speciális karaktert byte-kód alapján (≡) | ||
local | local homojel = string.char(226, 137, 161) | ||
local htmlHomo = "≡" | |||
for sor in nyersAdat:gmatch("[^\r\n]+") do | for sor in nyersAdat:gmatch("[^\r\n]+") do | ||
| 31. sor: | 27. sor: | ||
local ervenyesNev = cleanName(ervenyesNevNyers) | local ervenyesNev = cleanName(ervenyesNevNyers) | ||
-- 2. Szinonimák kinyerése | -- 2. Szinonimák kinyerése | ||
local szinonimaResz = sor:match("#(.*)$") or "" | local szinonimaResz = sor:match("#(.*)$") or "" | ||
| 37. sor: | 33. sor: | ||
local lista = {} | local lista = {} | ||
-- A jelek mentén darabolunk | -- A jelek mentén darabolunk (a mintában a fix jelek és a byte-kód alapú jel) | ||
-- A minta: ([jelek])(szöveg a következő jelig) | |||
local pattern = "([=%-" .. homojel .. "])%s*([^=%-" .. homojel .. "]+)" | |||
for jel, nev in szinonimaResz:gmatch(pattern) do | |||
local tisztaNev = cleanName(nev) | local tisztaNev = cleanName(nev) | ||
if tisztaNev ~= "" then | if tisztaNev ~= "" then | ||
-- | -- Ellenőrizzük, hogy a talált jel a homotipikus-e | ||
if | local isHomo = (jel == homojel) | ||
if isHomo and #lista > 0 and lista[#lista].isHomo then | |||
table.insert(lista[#lista].nevek, tisztaNev) | table.insert(lista[#lista].nevek, tisztaNev) | ||
else | else | ||
table.insert(lista, { | table.insert(lista, { | ||
megjelenitettJel = isHomo and htmlHomo or jel, | |||
isHomo = isHomo, | |||
nevek = {tisztaNev} | nevek = {tisztaNev} | ||
}) | }) | ||
| 62. sor: | 62. sor: | ||
end | end | ||
local sorVeg = table.concat(formaltNevek, " " .. htmlHomo .. " ") | |||
local sorVeg = table.concat(formaltNevek, " " .. | |||
eredmeny = eredmeny .. "* " .. elem.megjelenitettJel .. " " .. sorVeg .. "\n" | eredmeny = eredmeny .. "* " .. elem.megjelenitettJel .. " " .. sorVeg .. "\n" | ||
end | end | ||
A lap 2026. január 11., 12:30-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 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()
-- Meghatározzuk a speciális karaktert byte-kód alapján (≡)
local homojel = string.char(226, 137, 161)
local htmlHomo = "≡"
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 kinyerése
local szinonimaResz = sor:match("#(.*)$") or ""
local eredmeny = "== A ''" .. ervenyesNev .. "'' szinonimái ==\n\n"
local lista = {}
-- A jelek mentén darabolunk (a mintában a fix jelek és a byte-kód alapú jel)
-- A minta: ([jelek])(szöveg a következő jelig)
local pattern = "([=%-" .. homojel .. "])%s*([^=%-" .. homojel .. "]+)"
for jel, nev in szinonimaResz:gmatch(pattern) do
local tisztaNev = cleanName(nev)
if tisztaNev ~= "" then
-- Ellenőrizzük, hogy a talált jel a homotipikus-e
local isHomo = (jel == homojel)
if isHomo and #lista > 0 and lista[#lista].isHomo then
table.insert(lista[#lista].nevek, tisztaNev)
else
table.insert(lista, {
megjelenitettJel = isHomo and htmlHomo or jel,
isHomo = isHomo,
nevek = {tisztaNev}
})
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
local sorVeg = table.concat(formaltNevek, " " .. htmlHomo .. " ")
eredmeny = eredmeny .. "* " .. elem.megjelenitettJel .. " " .. sorVeg .. "\n"
end
return eredmeny
end
end
return "A megadott taxon nem található."
end
return p