Modul:Kembox/Chembox Images

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

local boxtbl = {   -- a paraméterek sorrendje és infóboxbeli felirata.
        IUPACName               = { 22, "[[IUPAC]]-név" },
        SystematicName          = { 23, "[[IUPAC|Szabályos név]]" },
        OtherNames              = { 24, "Más nevek" },
        }

local szintbl = {  -- szinonimaszótár. Programon belül Chembox_new neveit használjuk.
        ["név"]                 = 'Name',                      -- Vegyület_infobox
        ["kép"]                 = 'ImageFile',                 -- Vegyület_infobox -- ImageFile paraméterei
        ["image"]               = 'ImageFile',                 -- Drugbox
        ["Kép"]                 = 'ImageFile',                 -- Gyógyszeresdoboz
        ["képméret"]            = 'ImageSize',                 -- Vegyület_infobox
        ["width"]               = 'ImageSize',                 -- Drugbox
        ["Méret"]               = 'ImageSize',                 -- Gyógyszeresdoboz
        ["kép2"]                = 'ImageFile1',                -- Vegyület_infobox -- ImageFile1 paraméterei
        ["image2"]              = 'ImageFile1',                -- Drugbox
        ["Kép2"]                = 'ImageFile1',                -- Gyógyszeresdoboz
        ["képméret2"]           = 'ImageSize1',                -- Vegyület_infobox
        ["width2"]              = 'ImageSize1',                -- Drugbox_new
        ["Méret2"]              = 'ImageSize1',                -- Gyógyszeresdoboz
        ["2D_kép"]              = 'ImageFileL1',               -- Vegyület_infobox -- ImageFileL1 paraméterei
        ["imageL"]              = 'ImageFileL1',               -- Drugbox_new
        ["KépBal"]              = 'ImageFileL1',               -- Gyógyszeresdoboz
        ["widthL"]              = 'ImageSizeL1',               -- Drugbox_new
        ["MéretBal"]            = 'ImageSizeL1',               -- Gyógyszeresdoboz
        ["3D_kép"]              = 'ImageFileR1',               -- Vegyület_infobox -- ImageFileR1 paraméterei
        ["imageR"]              = 'ImageFileR1',               -- Drugbox_new
        ["KépJobb"]             = 'ImageFileR1',               -- Gyógyszeresdoboz
        ["widthR"]              = 'ImageSizeR1',               -- Drugbox_new
        ["MéretJobb"]           = 'ImageSizeR1',               -- Gyógyszeresdoboz
        ["kristályszerkezeti_kép"]  = 'ImageFile2',            -- Vegyület_infobox -- ImageFile2 paraméterei
        ["IUPACNév"]            = 'IUPACName',                 -- Chembox_új
        ["IUPAC_name"]          = 'IUPACName',                 -- Drugbox
        ["IUPAC_név"]           = 'IUPACName',                 -- Vegyület_infobox
        ["IUPACnév"]            = 'IUPACName',                 -- Gyógyszeresdoboz
        ["SzabályosNév"]        = 'SystematicName',            -- Chembox_új
        ["MásNév"]              = 'OtherNames',                -- Chembox_új
        ["egyéb_nevek"]         = 'OtherNames',                -- Vegyület_infobox
        ["synonyms"]            = 'OtherNames',                -- Drugbox
        ["Szinoníma"]           = 'OtherNames',                -- Gyógyszeresdoboz
        }

local munka = {}    -- { { sorsz, címke }, érték }
local uto   = {}    -- utófeldolgozást igénylő paraméterek (egy eredménysor több paraméterből áll elő)

local function egysor(nev,ertek,hivo)
    local utotbl = {    -- automatikusan uto-ba kerülő paraméterek listája. A true nem kell, de enélkül nem lesz asszociatív a tömb.
        Name                  = true,
        Reference             = true,
        ["képaláírás"]        = true,
        ["képaláírás2"]       = true,
        ImageFile             = true,     -- ImageFile
        ImageSize             = true,
        ImageAlt              = true,
        ImageName             = true,
        ImageFile1            = true,     -- ImageFile1
        ImageSize1            = true,
        ImageAlt1             = true,
        ImageName1            = true,
        ImageFileL1           = true,     -- ImageFileL1
        ImageSizeL1           = true,
        ImageAltL1            = true,
        ImageNameL1           = true,
        ImageFileR1           = true,     -- ImageFileR1
        ImageSizeR1           = true,
        ImageAltR1            = true,
        ImageNameR1           = true,
        ImageFile2            = true,     -- ImageFile2
        ImageSize2            = true,
        ImageAlt2             = true,
        ImageName2            = true,
        ImageFile3            = true,     -- ImageFile3
        ImageSize3            = true,
        ImageAlt3             = true,
        ImageName3            = true,
        ImageFileL2           = true,     -- ImageFileL2
        ImageSizeL2           = true,
        ImageAltL2            = true,
        ImageNameL2           = true,
        ImageFileR2           = true,     -- ImageFileR2
        ImageSizeR2           = true,
        ImageAltR2            = true,
        ImageNameR2           = true,
        }
    n = string.gsub(nev,' ','_')
    if szintbl[n] then n = szintbl[n] end  -- n a Chembox_new-beli név
    if (hivo == 'Drugbox' or hivo == 'Gyógyszeresdoboz') and (n == 'ImageName' or n == 'IUPACName')
    then if n == 'ImageName' then uto.Name = ertek end
         if n == 'IUPACName' then table.insert(munka,{ {22,3},boxtbl.IUPACName[2],ertek}) end
    else if utotbl[n] and ertek and #ertek > 0        -- a második menetben feldolgozandó paraméter: az elsőben nincs vele tennivaló
         then uto[n] = ertek
         elseif boxtbl[n] and ertek and #ertek > 0    -- a boxtbl tábla (lásd feljebb) az ismert paramétereket és azok sorrendjét tartalmazza
         then   table.insert(munka,{boxtbl[n],ertek})                  -- az üres paramétereket nem írjuk ki
         end
    end
end

--                                 Utófeldolgozás következik: a több paraméterből összeálló adatok összefésülése
local function menet2(hivo,partbl,lapcim)
--  A lap címe
    if type(uto.Name) ~= 'string' then if lapcim then uto.Name = lapcim else uto.Name = partbl.Name end end
    if uto.Name
    then    if uto.Reference then uto.Name = uto.Name..uto.Reference else uto.Name = uto.Name end
            if hivo == 'Drugbox' or hivo == 'Gyógyszeresdoboz'
            then table.insert(munka,{ {13,2}, { uto.Name, '+1' } })
            else table.insert(munka,{ {1,4}, { uto.Name } })
            end
    end
--  Kép aláírások (Vegyület_infobox)
    if uto["képaláírás"]  then table.insert(munka,{ {11,2}, { uto["képaláírás"],  '+1' } }) end
    if uto["képaláírás2"] then table.insert(munka,{ {13,2}, { uto["képaláírás2"], '+1' } }) end
--  Képek
    if uto.ImageFile
    then table.insert(munka,{{10,1},{ImageFile=uto.ImageFile, ImageSize=uto.ImageSize, ImageAlt=uto.ImageAlt, ImageName=uto.ImageName}} )
    end
    if uto.ImageFile1
    then table.insert(munka,{{12,1},{ImageFile=uto.ImageFile1, ImageSize=uto.ImageSize1, ImageAlt=uto.ImageAlt1, ImageName=uto.ImageName1}} )
    end
    if uto.ImageFileL1
    then if hivo == 'Vegyület_infobox'
         then  if not uto.ImageNameL1 then uto.ImageNameL1 = "'''2 dimenziós<br>szerkezet'''" end
               if not uto.ImageNameR1 then uto.ImageNameR1 = "'''3 dimenziós<br>szerkezet'''" end
         end
         kep1adat = {ImageFile=uto.ImageFileL1, ImageSize=uto.ImageSizeL1, ImageAlt=uto.ImageAltL1, ImageName=uto.ImageNameL1}
         kep2adat = {ImageFile=uto.ImageFileR1, ImageSize=uto.ImageSizeR1, ImageAlt=uto.ImageAltR1, ImageName=uto.ImageNameR1}
         if hivo == 'Vegyület_infobox'
         then  if not uto.ImageFileL1 then kep1adat = nil end
               if not uto.ImageFileR1 then kep2adat = nil end
         end
         table.insert(munka,{{14,1},kep1adat,kep2adat} )
    end
    if uto.ImageFile2
    then table.insert(munka,{{16,1},{ImageFile=uto.ImageFile2, ImageSize=uto.ImageSize2, ImageAlt=uto.ImageAlt2, ImageName=uto.ImageName2}} )
    end
    if uto.ImageFile3
    then table.insert(munka,{{18,1},{ImageFile=uto.ImageFile3, ImageSize=uto.ImageSize3, ImageAlt=uto.ImageAlt3, ImageName=uto.ImageName3}} )
    end
    if uto.ImageFileL2
    then table.insert(munka,{{20,1},{ImageFile=uto.ImageFileL2, ImageSize=uto.ImageSizeL2, ImageAlt=uto.ImageAltL2, ImageName=uto.ImageNameL2},
                                    {ImageFile=uto.ImageFileR2, ImageSize=uto.ImageSizeR2, ImageAlt=uto.ImageAltR2, ImageName=uto.ImageNameR2}} )
    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


-- Kívülről is hívható függvények
local p = {}

-- Hívás sablonból
function p.Chembox_Images(frame)
    local eredm = {}    -- { címke, érték } rendezve
    local hivo  = frame.args['infobox']   -- hívó sablon
    local szulo = frame:getParent()       -- a chembox_new sablon által kapott paraméterek
    for nev,ertek in szulo:argumentPairs()
    do  egysor(nev,ertek,hivo)
    end
    menet2(hivo,frame.args,frame:preprocess('{{PAGENAME}}'))
    return rendez(hivo)
end

-- Hívás modulból
function p.lua(partbl,hivo,lapcim)
    for nev,ertek in pairs(partbl)
    do    egysor(nev,ertek,hivo)
    end
    menet2(hivo,partbl,lapcim)
    return rendez(hivo)
end


return p;