Modul:Kembox/Chembox Images
Kembox/Chembox Images[mi ez?] • [dokumentáció: mutat, ] • [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;