Sebastian Walz 860d31cee1
Tohu vaBohu
2023-04-21 00:22:52 +02:00

171 lines
5.4 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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