Aller au contenu

Module:Chimie

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 26 mars 2018 à 23:27 et modifiée en dernier par Zebulon84 (discuter | contributions) (utilisation de ustring par précaution, même si normalement ça ne devrait pas être nécessaire (ce module ne sera pas appelé de nombreuses fois par pages) ; commentaires). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[créer] [purger]
local p = {}

local function escapePattern( plain_str )
	return mw.ustring.gsub( plain_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )
end

function p.precautions( frame )
	local args = {}
	-- copie de la table d'argument pour pouvoir ajouter de nouvelle valeur, ce qui ne semble pas possible dans frame.args
	for k, v in pairs( frame.args ) do
		args[ k ] = v
	end
	
	local function separation( param )
		local arg = args[ param ]
		if arg then
			for val in mw.text.gsplit( mw.text.unstrip( arg ), '%s*,%s*' ) do
				args[ 'prec' .. val ] = '1'
			end
			-- supprime les paramètres qui ont été séparés, mais garde les références initiale ou finale
			args[ param ] = mw.ustring.gsub( arg, escapePattern( mw.text.unstrip( arg ) ), '' )
		end
	end
	
	separation( 'symboles' )
	separation( 'r' )
	separation( 's' )
	
	return frame:expandTemplate{ title = 'Infobox Chimie/Précautions', args = args }
end

return p