Документация

Модуль для вывода классификация и обозначения безопасности (P4952), пример — ацетат ртути(II) (Q418720).

Методы править

formatNFPA704 править

NFPA 704 four-colored diamondОгнеопасность 0: Негорючее веществоОпасность для здоровья 4: Очень кратковременное воздействие может вызвать смерть или крупные остаточные повреждения (например, тетраэтилсвинец, синильная кислота, фосфин)Реакционноспособность 0: Стабильно даже при действии открытого пламени и не реагирует с водой (например, гелий)Специальный код: отсутствует
0
4
0
NFPA 704 four-colored diamondОгнеопасность 0: Негорючее веществоОпасность для здоровья 0: Не представляет опасности для здоровья, не требует мер предосторожности (например, ланолин, пищевая сода)Реакционноспособность 0: Стабильно даже при действии открытого пламени и не реагирует с водой (например, гелий)Специальный код: отсутствует
0
0
0
NFPA 704 four-colored diamondОгнеопасность 0: Негорючее веществоОпасность для здоровья 3: Кратковременное воздействие может привести к серьёзным временным или умеренным остаточным последствиям (например, хлор, серная кислота)Реакционноспособность 2: Подвергается серьёзным химическим изменениям при повышенной температуре и давлении, бурно реагирует с водой или может образовывать взрывчатые смеси с водой (например, фосфор, калий, натрий)Специальный код W: Реагирует с водой необычным или опасным образом (например, цезий, натрий, рубидий)
0
3
2
NFPA 704 four-colored diamondОпасность для здоровья 3: Кратковременное воздействие может привести к серьёзным временным или умеренным остаточным последствиям (например, хлор, серная кислота)Реакционноспособность 2: Подвергается серьёзным химическим изменениям при повышенной температуре и давлении, бурно реагирует с водой или может образовывать взрывчатые смеси с водой (например, фосфор, калий, натрий)Специальный код W: Реагирует с водой необычным или опасным образом (например, цезий, натрий, рубидий)
?
3
2

Для форматирования классификации NFPA 704 при помощи шаблона {{NFPA 704}}.

Используются квалификаторы опасность для здоровья по NFPA (P993), огнеопасность по NFPA (P994), реактивность по NFPA (P995) и NFPA - другое (P877) на утверждении NFPA 704: Стандартная система идентификации опасных веществ для реагирования на чрезвычайные ситуации (Q51139288).

formatGHSPictograms править

Пиктограмма «Череп и скрещённые кости» системы СГСПиктограмма «Опасность для здоровья» системы СГСПиктограмма «Окружающая среда» системы СГС

Для форматирования пиктограмм опасности СГС при помощи шаблона {{Пиктограммы СГС}}.

Используется квалификатор пиктограмма опасности СГС (P5040) на утверждении Regulation (EC) No. 1272/2008 (Q2005334).

formatGHSWord править

  • опасно
  • осторожно

Для вывода сигнального слова СГС — «опасно» или «осторожно».

Используется квалификатор сигнальное слово СГС (P1033) на утверждении Regulation (EC) No. 1272/2008 (Q2005334).

formatGHSHStatements править

H300+H310+H330, H373, H410

Для форматирования кратких характеристик опасности по СГС при помощи шаблона {{H-фразы}}.

Используется квалификатор краткие характеристики опасности СГС (P5041) на утверждении Regulation (EC) No. 1272/2008 (Q2005334).

formatGHSPStatements править

P260, P262, P280, P301+P330+P331, P302+P352, P304+P340, P310

Для форматирования мер предосторожности по СГС при помощи шаблона {{P-фразы}}.

Используется квалификатор меры предосторожности СГС (P5042) на утверждении Regulation (EC) No. 1272/2008 (Q2005334).

Замечания править

  • NFPA 704 без div'а разъезжается.
  • Нужно переделать .datavalue.value.id на formatSnak.
local p = {}

function p.formatNFPA704( context, options, statement )
	if (not context) then error('context is not specified') end;
	if (not options) then error('options is not specified') end;
	if (not statement) then error('statement is not specified') end;
	
	if (not statement.qualifiers) then return '' end;

	local qualifiers = {
		P993 = 'опасность для здоровья',
		P994 = 'огнеопасность',
		P995 = 'реакционноспособность',
		P877 = 'прочее'
	}
	local parameters = {}
	
	options.somevalue = '?' -- TODO
	options.novalue = '-'
	for qualifier, parameter in pairs(qualifiers) do
		if statement.qualifiers[qualifier] then
			parameters[parameter] = context.formatSnak( options, statement.qualifiers[qualifier][1] )
		end
	end
	
	return options.frame:expandTemplate{ title = 'NFPA 704', args = parameters };
end

function p.formatGHSPictograms( context, options, statement )
	if (not context) then error('context is not specified') end;
	if (not options) then error('options is not specified') end;
	if (not statement) then error('statement is not specified') end;
	
	local pictograms = {
		Q51080746 = '01',
		Q51791331 = '02',
		Q51843300 = '03',
		Q51843559 = '04',
		Q51843949 = '05',
		Q51843956 = '06',
		Q51843962 = '07',
		Q51843964 = '08',
		Q51843973 = '09'
	}
	
	if statement.qualifiers and statement.qualifiers.P5040 then
		local codes = {}
		for _, snak in pairs(statement.qualifiers.P5040) do
			if snak.datavalue then
				table.insert(codes, pictograms[snak.datavalue.value.id] or '') -- TODO
			end
		end
		return options.frame:expandTemplate{ title = 'Пиктограммы СГС', args = codes }; 
	else
		return ''
	end
end

function p.formatGHSWord( context, options, statement )
	if (not context) then error('context is not specified') end;
	if (not options) then error('options is not specified') end;
	if (not statement) then error('statement is not specified') end;

	local words = {
		Q15221217 = 'опасно',
		Q15350847 = 'осторожно'
	}

	if statement.qualifiers and statement.qualifiers.P1033 and statement.qualifiers.P1033[1].datavalue then
		return words[statement.qualifiers.P1033[1].datavalue.value.id] or '' -- TODO
	else
		return ''
	end
end	

function p.formatGHSHStatements( context, options, statement )
	if (not context) then error('context is not specified') end;
	if (not options) then error('options is not specified') end;
	if (not statement) then error('statement is not specified') end;
	
	if statement.qualifiers and statement.qualifiers.P5041 then
		local hPhrases = {}
		for _, snak in pairs(statement.qualifiers.P5041) do
			if snak.datavalue then
				table.insert(hPhrases, mw.wikibase.label(snak.datavalue.value.id)) -- TODO
			end
		end
		return options.frame:expandTemplate{ title = 'H-фразы', args = hPhrases }; 
	else
		return ''
	end
end

function p.formatGHSPStatements( context, options, statement )
	if (not context) then error('context is not specified') end;
	if (not options) then error('options is not specified') end;
	if (not statement) then error('statement is not specified') end;
	
	if statement.qualifiers and statement.qualifiers.P5042 then
		local pPhrases = {}
		for _, snak in pairs(statement.qualifiers.P5042) do
			if snak.datavalue then
				table.insert(pPhrases, mw.wikibase.label(snak.datavalue.value.id)) -- TODO
			end
		end
		return options.frame:expandTemplate{ title = 'P-фразы', args = pPhrases }; 
	else
		return ''
	end
end

return p