171 lines
5.4 KiB
Lua
171 lines
5.4 KiB
Lua
includeCode ( "hazardous/ghs/euhazards" )
|
||
includeCode ( "hazardous/ghs/hazards" )
|
||
includeCode ( "hazardous/ghs/precautions" )
|
||
includeCode ( "hazardous/ghs/signals" )
|
||
|
||
-- pictograms
|
||
ghsExplosive = 1
|
||
ghsFlame = 2
|
||
ghsOFlame = 3 -- roundflame
|
||
ghsBottle = 4
|
||
ghsAcid = 5
|
||
ghsSkull = 6
|
||
ghsExclam = 7
|
||
ghsHealth = 8 -- silhouette
|
||
ghsPollu = 9 -- aqpol
|
||
|
||
-- signal words
|
||
ghsNone = 1
|
||
ghsWarning = 2
|
||
ghsDanger = 3
|
||
ghsInvalid = 4
|
||
|
||
function ghsData ( hazardousData )
|
||
local result
|
||
local name = hazardousData.title
|
||
if hazardousData.ghs == nil
|
||
then
|
||
log.warn
|
||
(
|
||
"gethazardousData",
|
||
"please update ›" .. name .. "‹ to new format (ghs { hazards, euHazards, precautions, pictograms, signal})!"
|
||
)
|
||
result
|
||
= {
|
||
hazards = hazardousData.hazards,
|
||
euHazards = hazardousData.euHazards,
|
||
precautions = hazardousData.precautions,
|
||
pictograms = hazardousData.dangers,
|
||
signal = hazardousData.signal,
|
||
}
|
||
else
|
||
result = hazardousData.ghs
|
||
end
|
||
|
||
-- hazard statements
|
||
if result.hazards == nil
|
||
then
|
||
result.hazards = {}
|
||
elseif type ( result.hazards ) == "number"
|
||
or type ( result.hazards ) == "string"
|
||
then
|
||
result.hazards = { tostring ( result.hazards ) }
|
||
end
|
||
|
||
-- eu-hazard statements
|
||
if result.euHazards == nil
|
||
then
|
||
result.euHazards = {}
|
||
elseif type ( result.euHazards ) == "number"
|
||
or type ( result.euHazards ) == "string"
|
||
then
|
||
result.euHazards = { tostring ( result.euHazards ) }
|
||
end
|
||
|
||
-- precaution statements
|
||
if result.precautions == nil
|
||
then
|
||
result.precautions = {}
|
||
elseif type ( result.precautions ) == "number"
|
||
or type ( result.precautions ) == "string"
|
||
then
|
||
result.precautions = { tostring ( result.precautions ) }
|
||
end
|
||
|
||
-- pictograms
|
||
result.pictograms = result.pictograms or {}
|
||
|
||
-- signal word
|
||
if result.signal == nil
|
||
then
|
||
result.signal = ghsInvalid
|
||
elseif type ( result.signal ) ~= "number"
|
||
or result.signal >= ghsInvalid
|
||
or result.signal < ghsNone
|
||
then
|
||
log.warn
|
||
(
|
||
"gethazardousData",
|
||
"›" .. name .. "‹ has invalid signal word!"
|
||
)
|
||
result.signal = ghsInvalid
|
||
end
|
||
return result
|
||
end
|
||
|
||
function ghsPictograms ( ghs, pictograms )
|
||
for index, pictogram in ipairs ( ghs.pictograms )
|
||
do
|
||
table.insert ( pictograms, ghsSinglePictogram ( pictogram, "" ) )
|
||
end
|
||
end
|
||
|
||
function ghsNamedPictogram ( inPictogram, extra )
|
||
pictogram = inPictogram:lower ( )
|
||
if pictogram == "explosive"
|
||
or pictogram == "1"
|
||
then
|
||
return ghsSinglePictogram ( ghsExplosive, extra )
|
||
elseif pictogram == "flame"
|
||
or pictogram == "2"
|
||
then
|
||
return ghsSinglePictogram ( ghsFlame, extra )
|
||
elseif pictogram == "oflame"
|
||
or pictogram == "roundflame"
|
||
or pictogram == "3"
|
||
then
|
||
return ghsSinglePictogram ( ghsOFlame, extra )
|
||
elseif pictogram == "bottle"
|
||
or pictogram == "gas"
|
||
or pictogram == "4"
|
||
then
|
||
return ghsSinglePictogram ( ghsBottle, extra )
|
||
elseif pictogram == "acid"
|
||
or pictogram == "corrosive"
|
||
or pictogram == "5"
|
||
then
|
||
return ghsSinglePictogram ( ghsAcid, extra )
|
||
elseif pictogram == "skull"
|
||
or pictogram == "toxic"
|
||
or pictogram == "poisonous"
|
||
or pictogram == "6"
|
||
then
|
||
return ghsSinglePictogram ( ghsSkull, extra )
|
||
elseif pictogram == "exclam"
|
||
or pictogram == "!"
|
||
or pictogram == "7"
|
||
then
|
||
return ghsSinglePictogram ( ghsExclam, extra )
|
||
elseif pictogram == "health"
|
||
or pictogram == "silhouette"
|
||
or pictogram == "8"
|
||
then
|
||
return ghsSinglePictogram ( ghsHealth, extra )
|
||
elseif pictogram == "pollu"
|
||
or pictogram == "aqpol"
|
||
or pictogram == "9"
|
||
then
|
||
return ghsSinglePictogram ( ghsPollu, extra )
|
||
else
|
||
return "Unknown Pictogram »" .. inPictogram .. "«!"
|
||
end
|
||
end
|
||
|
||
function ghsSinglePictogram ( pictogram, extra )
|
||
return "\\includegraphics[width=\\@HazardousPictogramSize" .. ( "," .. extra or "" ) .. "]"
|
||
.. ( "{"..source.."assets/pictograms/ghs/%02d.pdf}" ):format ( pictogram )
|
||
end
|
||
|
||
function ghsStatements ( ghs )
|
||
if not next ( ghs.hazards )
|
||
and not next ( ghs.euHazards )
|
||
and not next ( ghs.precautions )
|
||
then
|
||
tex.print ( "H: —, P: —" )
|
||
else
|
||
ghsHazards ( ghs )
|
||
ghsEUHazards ( ghs )
|
||
ghsPrecautions ( ghs )
|
||
end
|
||
end
|