Modul:Kembox/Chembox Hazards
Megjelenés
Kembox/Chembox Hazards[mi ez?] • [dokumentáció: mutat, ] • [tesztek: létrehozás]
local csopfej = "Veszélyek"
local boxtbl = { -- a paraméterek sorrendje és infoboxbeli felirata. Az 1-es sorszám fenntartva csopfej-nek.
ExternalMSDS = { 2, "[[Biztonsági adatlap|MSDS]]" },
EUClass = { 3, "[[67/548/EGK irányelv|EU osztályozás]]" },
EUIndex = { 4, "EU Index" },
MainHazards = { 5, "Főbb [[Veszélyességi szimbólumok|veszélyek]]" },
IngestionHazard = { 6, "[[Lenyelés]] [[veszély]]e" },
InhalationHazard = { 7, "[[Belégzés]] [[veszély]]e" },
EyeHazard = { 8, "[[Szem]]be kerülés [[veszély]]e" },
SkinHazard = { 9, "[[Bőr-kontaktus]] [[veszély]]e" },
-- -- a 10-es kód fenntartva a tűzgyémántnak (NFPA-''x'')
RPhrases = { 11, "[[R mondatok]]" },
SPhrases = { 12, "[[S mondatok]]" },
RSPhrases = { 13, "[[R/S mondatok]]" },
FlashPt = { 14, "[[Lobbanáspont]]" },
["gyúlékonyság"] = { 15, "[[Gyúlékonyság]]" },
Autoignition = { 16, "[[Öngyulladási hőmérséklet|Öngyulladási hőmérséklet]]" },
ExploLimits = { 17, "[[Robbanási határ]]" },
PEL = { 18, "[[Megengedhető expozíció határ|PEL]]" },
LD50 = { 19, "[[LD50|LD<sub>50</sub>]]" },
}
local szintbl = { -- szinonimaszótár. Programon belül Chembox_new neveit használjuk.
["KülsőMSDS"] = 'ExternalMSDS', -- Chembox_új
["MSDS"] = 'ExternalMSDS', -- Vegyület_infobox
["EUOsztály"] = 'EUClass', -- Chembox_új
["EU-osztályozás"] = 'EUClass', -- Vegyület_infobox
["EG-Index-szám"] = 'EUIndex', -- Vegyület_infobox
["FőbbVeszély"] = 'MainHazards', -- Chembox_új
["főbb_veszélyek"] = 'MainHazards', -- Vegyület_infobox
["LenyelésVeszély"] = 'IngestionHazard', -- Chembox_új
["BelégzésVeszély"] = 'InhalationHazard', -- Chembox_új
["SzemVeszély"] = 'EyeHazard', -- Chembox_új
["BőrVeszély"] = 'SkinHazard', -- Chembox_új
["RMondat"] = 'RPhrases', -- Chembox_új
["R_mondatok"] = 'RPhrases', -- Vegyület_infobox
["SMondat"] = 'SPhrases', -- Chembox_új
["S_mondatok"] = 'SPhrases', -- Vegyület_infobox
["RSMondat"] = 'RSPhrases', -- Chembox_új
["LobbanásPont"] = 'FlashPt', -- Chembox_új
["lobbanáspont"] = 'FlashPt', -- Vegyület_infobox
["Öngyulladás"] = 'Autoignition', -- Chembox_új
["öngyulladás_hőmérséklete"] = 'Autoignition', -- Vegyület_infobox
["RobHatár"] = 'ExploLimits', -- Chembox_új
["robbanási_határ"] = 'ExploLimits', -- Vegyület_infobox
}
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ő)
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.
["NFPA-H"] = true,
["NFPA-F"] = true,
["NFPA-R"] = true,
["NFPA-O"] = true,
}
n = string.gsub(nev,' ','_')
if szintbl[n] then n = szintbl[n] end -- n a Chembox_new-beli név
if hivo == 'Vegyület_infobox'
then if n == 'H' then n = 'NFPA-H' end
if n == 'F' then n = 'NFPA-F' end
if n == 'O' then n = 'NFPA-O' end
end
if 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
if utotbl[n] and ertek and #ertek > 0 then uto[n] = ertek end -- a második menetben feldolgozandó paraméter: az elsőben nincs vele tennivaló
end
function menet2()
local Ftbl = {
["0"] = 'title="0. gyúlékonysági osztály. Nem éghető. (pl. víz)">0</span>',
["1"] = 'title="1. gyúlékonysági osztály. Csak hevítés során gyullad be. Lobbanáspont: 93°C felett.">1</span>',
["2"] = 'title="2. gyúlékonysági fokozat. Enyhén hevítve gyúlékony. Lobbanáspont 38°C és 93°C között.">2</span>',
["3"] = 'title="3. gyúlékonysági fokozat. Olyan anyag, ami majdnem minden környezeti hőmérsékleten begyulladhat (pl. benzin). Lobbanáspont 38°C alatt és 23°C felett.">3</span>',
["4"] = 'title="4. gyúlékonysági osztály. Normál atmoszférikus nyomáson és hőmérsékleten gyorsan és teljes mértékben elpárolog a levegővel diszperziót képez és gyorsan elég. (pl. propán) Lobbanáspont: 23°C alatt.">4</span>'
}
local Htbl = {
["0"] = 'title="0. egészségi osztály. Az emberi egészségre még égéstermékeinek sincs különösebb veszélye. (pl. nátrium-klorid)">0</span>',
["1"] = 'title="1. egészségi osztály. Érintése irritációt okozhat, de maradandó sérülést nem. (pl. terpentin)">1</span>',
["2"] = 'title="2. egészségi osztály. Intenzív vagy krónikus érintkezés eszméletvesztést vagy maradandó sérülést okozhat. (pl. kloroform)">2</span>',
["3"] = 'title="3. egészségi osztály. Már rövid érintkezés is komoly egészségi károsodást okozhat. (pl. klórgáz)">3</span>',
["4"] = 'title="4. egészségi osztály. Nagyon rövid érintkezés is halálhoz vagy súlyos és maradandó sérüléshez vezethet. (pl. VX gáz)">4</span>',
}
local Rtbl = {
["0"] = 'title="0. reaktivitási osztály. Normál esetben stabil, vízzel hevítve sem reagál (pl. folyékony nitrogén).">0</span>',
["1"] = 'title="1. reaktivitási osztály. Normál körülmények között stabil, de magasabb hőmérsékleten vagy nyomáson instabillá válhat (pl. kalcium).">1</span>',
["2"] = 'title="2. reaktivitási osztály. Magas hőmérsékleten és nyomáson heves kémiai változáson megy keresztül és vízzel robbanóelegyet képezhet (pl. foszfor).">2</span>',
["3"] = 'title="3. reaktivitási osztály. Robbanásra vagy robbanásszerű bomlásra képes, de erős kezdeti erő szükséges hozzá, és biztonságok körülmények között kell hevíteni a reakció indításához. Nagyon hevesen reagál vízzel, és ütés hatására felrobbanhat (pl. fluor).">3</span>',
["4"] = 'title="4. reaktivitási osztály. Normál hőmérsékleten és nyomáson könnyen robbanhat vagy robbanással járó bomlást szenvedhet (pl. nitroglicerin).">4</span>'
}
local Otbl = {
W = 'title="W. A vízzel szokatlan vagy veszélyes módon reakcióba lép (pl. cézium, nátrium)"><s>W</s></span>',
OX = 'title="OX – oxidálószer (pl. Kálium-perklorát)">OX</span>',
COR = 'title="Korrozív – erős sav vagy bázis (pl. kénsav, KOH).">COR</span>',
BIO = 'title="Biológiai veszély (pl. feketehimlő vírus).">BIO</span>',
CRYO = 'title="−150 °C alatti anyag.">CRYO</span>',
ACID = 'title="Maró sav.">ACID</span>',
ALK = 'title="Maró lúg.">ALK</span>',
RA = 'title="Radioaktív anyag.">RA</span>',
}
local NFPAstilus = 'background: transparent;'..
'height: 2em; '..
'text-align: center; '..
'vertical-align: middle; '..
'position: absolute; '..
'font-size: large; '
local NFPA = { 10, "[[NFPA 704]]" }
-- Tűzgyémánt
if uto["NFPA-H"] or uto["NFPA-F"] or uto["NFPA-R"] or uto["NFPA-O"]
then if not uto["NFPA-H"] then uto["NFPA-H"] = '0' end
if not uto["NFPA-F"] then uto["NFPA-F"] = '0' end
if not uto["NFPA-R"] then uto["NFPA-R"] = '0' end
str = '<div style="position: relative; height: 85px; width: 75px;">'..
'<div style="position: absolute; height: 75px; width: 75px;">'..
'[[Kép:NFPA 704.svg|75px]]</div>\n'
kod = Ftbl[uto["NFPA-F"]]
if not kod then kod = '"> </span>' end
str = str..'<div title="Gyúlékonyság" style="'..
'width: 75px; '..
'top: 10px; '..
NFPAstilus..'"><span class="abbr" style="color: black;" '..kod..'</div>\n'
kod = Htbl[uto["NFPA-H"]]
if not kod then kod = '"> </span>' end
str = str..'<div title="Egészség" style="'..
'width: 37.5px; '..
'top: 28px; '..
NFPAstilus..'"><span class="abbr" style="color: black;" '..kod..'</div>\n'
kod = Rtbl[uto["NFPA-R"]]
if not kod then kod = '"> </span>' end
str = str..'<div title="Reakciókészség" style="'..
'width: 37.5px; '..
'left: 37.5px; '..
'top: 28px; '..
NFPAstilus..'"><span class="abbr" style="color: black;" '..kod..'</div>\n'
if uto["NFPA-O"] and Otbl[string.upper(uto["NFPA-O"])] then kod = Otbl[string.upper(uto["NFPA-O"])] else kod = '"> </span>' end
str = str..'<div title="Egyéb" style="'..
'width: 75px; '..
'top: 47px; '..
NFPAstilus..'"><span class="abbr" style="color: black;" '..kod..'</div>\n'
str = str..'</div>'
table.insert(munka,{NFPA,str})
end
end
-- A munka-beli értékek rendezése és kiírása
local function rendez(hivo)
local eredm = {} -- { címke, érték } rendezve
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_Hazards(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,hivo)
end
menet2()
return rendez(hivo)
end
-- Hívás modulból
function p.lua(partbl,hivo)
for nev,ertek in pairs(partbl)
do egysor(nev,ertek)
end
menet2()
return rendez(hivo)
end
return p;