<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://rishon.rcorp.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AConversion</id>
	<title>Module:Conversion - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://rishon.rcorp.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AConversion"/>
	<link rel="alternate" type="text/html" href="https://rishon.rcorp.fr/index.php?title=Module:Conversion&amp;action=history"/>
	<updated>2026-09-05T09:00:05Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://rishon.rcorp.fr/index.php?title=Module:Conversion&amp;diff=1389&amp;oldid=prev</id>
		<title>RubnK : 1 version importée</title>
		<link rel="alternate" type="text/html" href="https://rishon.rcorp.fr/index.php?title=Module:Conversion&amp;diff=1389&amp;oldid=prev"/>
		<updated>2025-12-09T23:52:59Z</updated>

		<summary type="html">&lt;p&gt;1 version importée&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 10 décembre 2025 à 01:52&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;fr&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Aucune différence)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>RubnK</name></author>
	</entry>
	<entry>
		<id>https://rishon.rcorp.fr/index.php?title=Module:Conversion&amp;diff=1388&amp;oldid=prev</id>
		<title>wp&gt;Louperivois : espacement million, infobulles, code inutile</title>
		<link rel="alternate" type="text/html" href="https://rishon.rcorp.fr/index.php?title=Module:Conversion&amp;diff=1388&amp;oldid=prev"/>
		<updated>2024-01-13T03:03:50Z</updated>

		<summary type="html">&lt;p&gt;espacement million, infobulles, code inutile&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local math_mod = require &amp;quot;Module:Math&amp;quot;&lt;br /&gt;
local params = mw.loadData(&amp;quot;Module:Conversion/Données&amp;quot;)&lt;br /&gt;
local linguistic = require &amp;quot;Module:Linguistique&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local i18n = {&lt;br /&gt;
	invalidunitcat = &amp;#039;Page avec une unité de mesure non prise en charge&amp;#039;,&lt;br /&gt;
	invalidsourceunit = &amp;#039;$1 (unité non prise en charge)&amp;#039;,&lt;br /&gt;
	invalidtargetunit = &amp;#039;unité cible non prise en charge $1&amp;#039;,&lt;br /&gt;
	typemismatch = &amp;#039;impossible de convertir $1 en $2&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function convert(value, sourceunitdata, targetunitdata) -- convertir une valeur numérique en son équivalent dans une autre unité de mesure&lt;br /&gt;
	if not value then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if type(value) ~= &amp;#039;number&amp;#039; then&lt;br /&gt;
		return error(&amp;quot;bad datatype: &amp;quot; .. type(value))&lt;br /&gt;
	end&lt;br /&gt;
	if (not sourceunitdata) or (not targetunitdata) then&lt;br /&gt;
		return value&lt;br /&gt;
	end&lt;br /&gt;
	return value * sourceunitdata[2] / targetunitdata[2]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.displayvalue(val, sourceunit, displayformat, complement) -- affiche une valeur formatée)&lt;br /&gt;
	&lt;br /&gt;
	-- préparation des paramètres&lt;br /&gt;
	local numval = tonumber(val)&lt;br /&gt;
	if not numval then -- si les données sont inhabituelles, on laisse la fonction appelante se débrouiller&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not displayformat or type(displayformat) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
		displayformat = {}&lt;br /&gt;
	end&lt;br /&gt;
	local showunit, showlink, targetunit = displayformat.showunit, displayformat.showlink, displayformat.targetunit&lt;br /&gt;
	if showlink == &amp;#039;true&amp;#039; then&lt;br /&gt;
		showlink = true&lt;br /&gt;
	end&lt;br /&gt;
	local rounding = displayformat.rounding or 2&lt;br /&gt;
	-- récupération des donnnées concernant les unités&lt;br /&gt;
	if sourceunit and not targetunit then&lt;br /&gt;
		targetunit = sourceunit&lt;br /&gt;
	end&lt;br /&gt;
	local sourceunitdata, targetunitdata = sourceunit, targetunit&lt;br /&gt;
	if type(sourceunitdata) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
		sourceunitdata = params.units[sourceunit] or params.units[params.redirects[sourceunit]]&lt;br /&gt;
	end&lt;br /&gt;
	if type(targetunitdata) ~= &amp;#039;table&amp;#039; then	&lt;br /&gt;
		targetunitdata = params.units[targetunit] or params.units[params.redirects[targetunit]]&lt;br /&gt;
	end&lt;br /&gt;
	local suffix = {&amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;}&lt;br /&gt;
&lt;br /&gt;
	local maintenancestr = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	-- conversion&lt;br /&gt;
&lt;br /&gt;
	local function invalidsourcefallback(val, sourceunit) -- text to be shown when source unit is not supported&lt;br /&gt;
		local str = tostring(val)&lt;br /&gt;
		if sourceunit:match(&amp;#039;Q%d+&amp;#039;) or sourceunit:match(&amp;#039;q%d+&amp;#039;) then -- wikidata item&lt;br /&gt;
			sourceunit = mw.wikibase.label(sourceunit)&lt;br /&gt;
		end&lt;br /&gt;
		return val .. &amp;#039; &amp;#039; .. i18n[&amp;#039;invalidsourceunit&amp;#039;]:gsub(&amp;#039;$1&amp;#039;, sourceunit) .. &amp;#039;[[Category:&amp;#039; .. i18n.invalidunitcat .. &amp;#039;|&amp;#039; .. sourceunit .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	-- escape if source unit is invalid&lt;br /&gt;
	if (sourceunit and targetunit) and (targetunit~= sourceunit) and (not sourceunitdata or not sourceunitdata[1]) then&lt;br /&gt;
		return invalidsourcefallback(val, sourceunit)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if sourceunit and (not sourceunitdata) then &lt;br /&gt;
		local label = sourceunit&lt;br /&gt;
		local item = sourceunit:match(&amp;#039;q%d+&amp;#039;) or sourceunit:match(&amp;#039;Q%d+&amp;#039;)&lt;br /&gt;
		local link&lt;br /&gt;
		local symbol&lt;br /&gt;
		if item then&lt;br /&gt;
			label = mw.wikibase.label(item)&lt;br /&gt;
			link = mw.wikibase.sitelink(item)&lt;br /&gt;
			if showunit and (showunit ~= &amp;#039;long&amp;#039;) then -- symbole retrieved only if needed (somewhat expensive)&lt;br /&gt;
				for _,statement in pairs(mw.wikibase.getBestStatements(item, &amp;#039;P5061&amp;#039;)) do&lt;br /&gt;
					if statement[&amp;#039;mainsnak&amp;#039;][&amp;#039;snaktype&amp;#039;] == &amp;#039;value&amp;#039; and (statement[&amp;#039;mainsnak&amp;#039;][&amp;#039;datavalue&amp;#039;][&amp;#039;value&amp;#039;][&amp;#039;language&amp;#039;] == &amp;#039;fr&amp;#039; or statement[&amp;#039;mainsnak&amp;#039;][&amp;#039;datavalue&amp;#039;][&amp;#039;value&amp;#039;][&amp;#039;language&amp;#039;] == &amp;#039;mul&amp;#039;) then&lt;br /&gt;
						symbol = statement[&amp;#039;mainsnak&amp;#039;][&amp;#039;datavalue&amp;#039;][&amp;#039;value&amp;#039;][&amp;#039;text&amp;#039;]&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		sourceunitdata = {nil, 1, symbol or label, item, link, label, label}&lt;br /&gt;
		targetunit, targetunitdata  = sourceunit, sourceunitdata &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- warn if targetunit is unknown&lt;br /&gt;
	if targetunit and (not targetunitdata) then&lt;br /&gt;
		targetunit, targetunitdata = sourceunit, sourceunitdata&lt;br /&gt;
		maintenancestr = maintenancestr .. &amp;quot; &amp;quot;  .. i18n[&amp;#039;invalidtargetunit&amp;#039;]:gsub(&amp;#039;$1&amp;#039;, targetunit) .. &amp;#039;[[Category:&amp;#039; .. i18n.invalidunitcat .. &amp;#039;|&amp;#039; .. targetunit .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- check for type mismatch&lt;br /&gt;
	if (sourceunitdata and targetunitdata) and (targetunitdata[1] ~= sourceunitdata[1]) then&lt;br /&gt;
		local errmsg = i18n.typemismatch&lt;br /&gt;
		errmsg = errmsg:gsub(&amp;#039;$1&amp;#039;, sourceunit)&lt;br /&gt;
		errmsg = errmsg:gsub(&amp;#039;$2&amp;#039;, targetunit)&lt;br /&gt;
		maintenancestr = maintenancestr .. &amp;#039;(&amp;#039; .. errmsg .. &amp;#039;)&amp;#039;&lt;br /&gt;
		targetunit, targetunitdata = sourceunit, sourceunitdata&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- convert if needed&lt;br /&gt;
	if (sourceunit and targetunit) and (sourceunit ~= targetunit) then&lt;br /&gt;
		numval = convert(numval, sourceunitdata, targetunitdata)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if rounding then&lt;br /&gt;
		numval = math_mod._round( numval, rounding )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if displayformat.raw == true then -- nombre non formaté chaîne convertible en nombre sauf si catégorie de maintenance&lt;br /&gt;
		return (tostring(numval) or &amp;quot;&amp;quot;) .. maintenancestr&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not displayformat.rounding then&lt;br /&gt;
		if (math.abs(numval) &amp;gt; 1E9) then&lt;br /&gt;
			numval = math_mod._round( numval / 1E9, 1 )&lt;br /&gt;
			suffix = {&amp;quot;milliard &amp;quot;, &amp;quot;milliards &amp;quot;, &amp;quot;&amp;lt;abbr title=\&amp;quot;milliard\&amp;quot;&amp;gt;G&amp;lt;/abbr&amp;gt; &amp;quot;}&lt;br /&gt;
		elseif (math.abs(numval) &amp;gt; 1E6) then&lt;br /&gt;
			numval = math_mod._round( numval / 1E6, 1 )&lt;br /&gt;
			suffix = {&amp;quot;million &amp;quot;, &amp;quot;millions &amp;quot;, &amp;quot;&amp;lt;abbr title=\&amp;quot;million\&amp;quot;&amp;gt;M&amp;lt;/abbr&amp;gt; &amp;quot;}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local numstr = mw.getContentLanguage():formatNum(numval)&lt;br /&gt;
&lt;br /&gt;
	-- showlink&lt;br /&gt;
	if not targetunitdata then -- pour éviter les bugs&lt;br /&gt;
		targetunitdata = {}&lt;br /&gt;
	end&lt;br /&gt;
	local link&lt;br /&gt;
	if showlink == &amp;#039;-&amp;#039; then&lt;br /&gt;
		link = nil&lt;br /&gt;
	elseif type(showlink) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		link = showlink&lt;br /&gt;
	elseif showlink then&lt;br /&gt;
		link = targetunitdata[5]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- affichage de l&amp;#039;unité&lt;br /&gt;
	local unitstr, suffixstr&lt;br /&gt;
	if showunit == &amp;#039;long&amp;#039; then -- format long = montrer l&amp;#039;unité en entier&lt;br /&gt;
		if math.abs(numval or 0) &amp;gt;= 2 then&lt;br /&gt;
			unitstr = targetunitdata[7]&lt;br /&gt;
		else&lt;br /&gt;
			unitstr = targetunitdata[6]&lt;br /&gt;
		end&lt;br /&gt;
		if ((unitstr ~= &amp;#039;&amp;#039;) and link) then&lt;br /&gt;
			unitstr = &amp;#039;[[&amp;#039; .. link .. &amp;#039;|&amp;#039; .. unitstr .. &amp;#039;]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		if (unitstr ~= &amp;#039;&amp;#039;) and ((suffix[1] ~= &amp;#039;&amp;#039;) or (((numval or 0) &amp;gt; 999999) and ( (numval or 0)% 1000000 == 0))) then&lt;br /&gt;
			unitstr = linguistic.of(unitstr) -- 10 000 000 &amp;quot;de&amp;quot; tonnes&lt;br /&gt;
		end&lt;br /&gt;
		if math.abs(numval or 0) &amp;gt;= 2 then&lt;br /&gt;
			suffixstr = suffix[2]&lt;br /&gt;
		else&lt;br /&gt;
			suffixstr = suffix[1]&lt;br /&gt;
		end&lt;br /&gt;
			&lt;br /&gt;
	elseif showunit and (showunit ~= &amp;#039;-&amp;#039;) then&lt;br /&gt;
		unitstr = targetunitdata[3]&lt;br /&gt;
		if string.find(unitstr, &amp;quot;^%a&amp;quot;) then -- 8 G$ mais 8 G CHF&lt;br /&gt;
			suffixstr = suffix[3]&lt;br /&gt;
		else&lt;br /&gt;
			suffixstr = mw.text.trim(suffix[3])&lt;br /&gt;
		end&lt;br /&gt;
		if ((unitstr ~= &amp;#039;&amp;#039;) and link) then&lt;br /&gt;
			unitstr = &amp;#039;[[&amp;#039; .. link .. &amp;#039;|&amp;#039; .. unitstr .. &amp;#039;]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		suffixstr = suffix[3]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local str = numstr .. &amp;#039; &amp;#039; .. (suffixstr or &amp;#039;&amp;#039;) .. (unitstr or &amp;#039;&amp;#039;)&lt;br /&gt;
	str = mw.text.trim(str) .. maintenancestr&lt;br /&gt;
	if complement then&lt;br /&gt;
		if sourceunit then&lt;br /&gt;
			str = str .. &amp;quot; &amp;quot; .. linguistic.of(complement) -- &amp;quot;10 kg de bambous&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			str = str .. &amp;quot; &amp;quot; .. complement -- &amp;quot;3000 véhicules&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.display(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local value, origunit, targetunit = args[1], args[2], args[3]&lt;br /&gt;
	local rounding = args.rounding&lt;br /&gt;
	local showlink, showunit = 	args.showlink, args.showunit&lt;br /&gt;
	displayformat = {showunit = showunit, showlink = showlink, rounding = rounding, targetunit = targetunit}&lt;br /&gt;
	return p.displayvalue(value, origunit, displayformat)&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wp&gt;Louperivois</name></author>
	</entry>
</feed>