Modul:Kembox/Chembox Related

Kembox/Chembox Related[mi ez?] • [dokumentáció: mutat, szerkeszt] • [tesztek: létrehozás]

local csopfej = "Rokon vegyületek"

local boxtbl = {   -- a paraméterek sorrendje és infóboxbeli felirata. Az 1-es sorszám fenntartva csopfej-nek
          OtherAnions      = { 2, "Azonos [[kation]]" }, 
          OtherCations     = { 3, "Azonos [[ion|anion]]" },
          OtherFunctn      = { 4, "Rokon" },         -- a Function nevű paramétert Rokon mögé kell konkatenálni
          OtherCpds        = { 5, "Rokon vegyületek" },
          }
boxtbl["AzonosKation"]     = boxtbl.OtherAnions   -- Chembox_új
boxtbl["azonos_kationnal"] = boxtbl.OtherAnions   -- Vegyület_infobox
boxtbl["AzonosAnion"]      = boxtbl.OtherCations  -- Chembox_új
boxtbl["azonos_anionnal"]  = boxtbl.OtherCations  -- Vegyület_infobox
boxtbl["MásFunkciósCsop"]  = boxtbl.OtherFunctn   -- Chembox_új
boxtbl["MásVegyület"]      = boxtbl.OtherCpds     -- Chembox_új
boxtbl["rokon_vegyületek"] = boxtbl.OtherCpds     -- Vegyület_infobox

local munka = {}       -- { { sorsz, címke }, érték }

-- Egy név/érték paraméter tárolása munka-ban
local function egysor(nev,ertek,partbl)
    n = string.gsub(nev,' ','_')
    if boxtbl[n]     -- a boxtbl tábla (lásd feljebb) az ismert paramétereket és azok sorrendjét tartalmazza
    then    cimke = boxtbl[n]
            if n == 'OtherFunctn'       -- chembox_new
            then  str = partbl['Function']
                  if str and #str > 0 then cimke[2] = cimke[2]..' '..str end
            end   
            if n == 'MásFunkciósCsop'   -- chembox_új
            then  str = partbl['FunkciósCsop']
                  if str and #str > 0 then cimke[2] = cimke[2]..' '..str end
            end   
            if ertek and #ertek > 0 then table.insert(munka,{cimke,ertek}) end    -- az üres paramétereket nem írjuk ki
--  else    -- a hívó sablon hibás paramétert kapott a szócikkből
    end   
end

local eredm = {}         -- { címke, érték } rendezve

-- A munka-beli értékek rendezése és kiírása
local function rendez(hivo)
    if next(munka)
    then    -- van megadott paraméter
          local kozos = require("Module:Kembox/kozos")
          eredm[1] = csopfej
          kozos.adatcsoport(munka,eredm)       -- munka rendezése és átmásolása eredm-be
          return kozos.kiir(eredm,hivo)
    end
return ""
end

-- A kívülről hívható függvények következnek
local p = {}

-- Hívás sablonból
function p.Chembox_Related(frame)
    local hivo  = frame.args['infobox']   -- hívó sablon
    local szulo = frame:getParent()       -- a chembox_related sablon által kapott paraméterek

    for nev,ertek in szulo:argumentPairs()
    do    egysor(nev,ertek,szulo.args)
    end
    return rendez(hivo)
end

-- Hívás modulból
function p.lua(partbl,hivo)

    for nev,ertek in pairs(partbl)
    do    egysor(nev,ertek,partbl)
    end
    return rendez(hivo)
end

return p;