Aller au contenu

Module:Prix

De Wikivoyage

La documentation pour ce module peut être créée à Module:Prix/doc

local p = {}
local Math = require( "Module:Math" )
local Data = mw.loadData( 'Module:Prix/Data' )
local MonnaieErrorMess = ' <span style="color:#ff0000">Unité monétaire manquante ou inconnue</span>'
local categorie = ' '
local lang = mw.getContentLanguage()
function p.Prix(frame) 
	local PrixLocal = tonumber(frame.args[1])
    if type(PrixLocal) == 'number' then
    	local PrixDeviseLocal = PrixLocal
    	local formatted_PrixDeviseLocal = lang:formatNum( PrixLocal )
		local MonnaieLocale= frame.args[2]  
        local MonnaieLocaleExist = Data[ MonnaieLocale ]  -- teste si le code de monnaie existe
        if type(MonnaieLocaleExist) == 'table' then
              local Cours = Data[ MonnaieLocale ].cours
              local DateCours = Data[ MonnaieLocale ].date
              local NomMonnaieLocale =  Data[ MonnaieLocale ].nom
              local AbrMonnaieLocale =  Data[ MonnaieLocale ].abreviation
              local CodeMonnaieLocale =  Data[ MonnaieLocale ].code
              local NumCours = tonumber(Cours)
              
                 if type(NumCours) ~= 'nil' then -- si le cours de change n'est pas présent dans Module:Prix/Data
                     	local PrixEnEuro = Math._round(PrixDeviseLocal * 1 / NumCours, 2)  
                     	local formatted_PrixEnEuro = lang:formatNum( PrixEnEuro )
                     	local CoursCFA = Data[ 'XAF' ].cours
                     	local NumCoursCFA = tonumber(CoursCFA)
                     	local PrixEnCFA = Math._round(PrixDeviseLocal * NumCoursCFA / NumCours, 2)
                     	local formatted_PrixEnCFA = lang:formatNum( PrixEnCFA )
                     	local CoursCHF = Data[ 'CHF' ].cours
                        local NumCoursCHF = tonumber(CoursCHF)
                        local PrixEnCHF = Math._round(PrixDeviseLocal * NumCoursCHF / NumCours, 2)
                        local formatted_PrixEnCHF = lang:formatNum( PrixEnCHF )
                        local CoursCAD = Data[ 'CAD' ].cours
                        local NumCoursCAD = tonumber(CoursCAD)
                        local PrixEnCAD = Math._round(PrixDeviseLocal * NumCoursCAD / NumCours, 2)
                        local formatted_PrixEnCAD = lang:formatNum( PrixEnCAD )
                        local CoursUSD = Data[ 'USD' ].cours
                        local NumCoursUSD = tonumber(CoursUSD)
                        local PrixEnUSD = Math._round(PrixDeviseLocal * NumCoursUSD / NumCours, 2)
                        local formatted_PrixEnUSD = lang:formatNum( PrixEnUSD )
                     if CodeMonnaieLocale == 'EUR' then
                     	local DateCours = Data[ 'USD' ].date
                        return formatted_PrixDeviseLocal .. '&nbsp;<abbr title="'.. NomMonnaieLocale .. '">' .. AbrMonnaieLocale .. "</abbr>" .. '<span class="MonnaieRefCHF" style="display:none;"><small> (~' .. formatted_PrixEnCHF  .. "&nbsp;Fr. - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCAD" style="display:none;"><small> (~' .. formatted_PrixEnCAD  .. "&nbsp;$C - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefUSD" style="display:none;"><small> (~' .. formatted_PrixEnUSD  .. "&nbsp;$ - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCFA" style="display:none;"><small> (~' .. formatted_PrixEnCFA  .. "&nbsp;F CFA - cours du "  .. DateCours  .. ")</small></span>"
                     elseif CodeMonnaieLocale == 'CHF' then
                     	return formatted_PrixDeviseLocal .. '&nbsp;<abbr title="'.. NomMonnaieLocale .. '">' .. AbrMonnaieLocale .. "</abbr>" .. '<span class="MonnaieRefEUR" style="display:none;"><small> (<abbr title="Les utilisateurs connectés peuvent choisir leur monnaie de référence via l’onglet préférences puis gadgets">~' .. formatted_PrixEnEuro  .. "&nbsp;€</abbr> - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCAD" style="display:none;"><small> (~' .. formatted_PrixEnCAD  .. "&nbsp;$C - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefUSD" style="display:none;"><small> (~' .. formatted_PrixEnUSD  .. "&nbsp;$ - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCFA" style="display:none;"><small> (~' .. formatted_PrixEnCFA  .. "&nbsp;F CFA - cours du "  .. DateCours  .. ")</small></span>"
                     elseif CodeMonnaieLocale == 'CAD' then
                     	return formatted_PrixDeviseLocal .. '&nbsp;<abbr title="'.. NomMonnaieLocale .. '">' .. AbrMonnaieLocale .. "</abbr>" .. '<span class="MonnaieRefEUR" style="display:none;"><small> (<abbr title="Les utilisateurs connectés peuvent choisir leur monnaie de référence via l’onglet préférences puis gadgets">~' .. formatted_PrixEnEuro  .. "&nbsp;€</abbr> - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCHF" style="display:none;"><small> (~' .. formatted_PrixEnCHF  .. "&nbsp;Fr. - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefUSD" style="display:none;"><small> (~' .. formatted_PrixEnUSD  .. "&nbsp;$ - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCFA" style="display:none;"><small> (~' .. formatted_PrixEnCFA  .. "&nbsp;F CFA - cours du "  .. DateCours  .. ")</small></span>"
                     elseif CodeMonnaieLocale == 'USD' then
                     	return formatted_PrixDeviseLocal .. '&nbsp;<abbr title="'.. NomMonnaieLocale .. '">' .. AbrMonnaieLocale .. "</abbr>" .. '<span class="MonnaieRefEUR" style="display:none;"><small> (<abbr title="Les utilisateurs connectés peuvent choisir leur monnaie de référence via l’onglet préférences puis gadgets">~' .. formatted_PrixEnEuro  .. "&nbsp;€</abbr> - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCHF" style="display:none;"><small> (~' .. formatted_PrixEnCHF  .. "&nbsp;Fr. - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCAD" style="display:none;"><small> (~' .. formatted_PrixEnCAD  .. "&nbsp;$C - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCFA" style="display:none;"><small> (~' .. formatted_PrixEnCFA  .. "&nbsp;F CFA - cours du "  .. DateCours  .. ")</small></span>"
                     elseif CodeMonnaieLocale == 'XOF' then
                     	return formatted_PrixDeviseLocal .. '&nbsp;<abbr title="'.. NomMonnaieLocale .. '">' .. AbrMonnaieLocale .. "</abbr>" .. '<span class="MonnaieRefEUR" style="display:none;"><small> (<abbr title="Les utilisateurs connectés peuvent choisir leur monnaie de référence via l’onglet préférences puis gadgets">~' .. formatted_PrixEnEuro  .. "&nbsp;€</abbr> - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCHF" style="display:none;"><small> (~' .. formatted_PrixEnCHF  .. "&nbsp;Fr. - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCAD" style="display:none;"><small> (~' .. formatted_PrixEnCAD  .. "&nbsp;$C - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefUSD" style="display:none;"><small> (~' .. formatted_PrixEnUSD  .. "&nbsp;$ - cours du "  .. DateCours  .. ")</small></span>"
                     elseif CodeMonnaieLocale == 'XAF' then
                     	return formatted_PrixDeviseLocal .. '&nbsp;<abbr title="'.. NomMonnaieLocale .. '">' .. AbrMonnaieLocale .. "</abbr>" .. '<span class="MonnaieRefEUR" style="display:none;"><small> (<abbr title="Les utilisateurs connectés peuvent choisir leur monnaie de référence via l’onglet préférences puis gadgets">~' .. formatted_PrixEnEuro  .. "&nbsp;€</abbr> - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCHF" style="display:none;"><small> (~' .. formatted_PrixEnCHF  .. "&nbsp;Fr. - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCAD" style="display:none;"><small> (~' .. formatted_PrixEnCAD  .. "&nbsp;$C - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefUSD" style="display:none;"><small> (~' .. formatted_PrixEnUSD  .. "&nbsp;$ - cours du "  .. DateCours  .. ")</small></span>"
                     else
                        return formatted_PrixDeviseLocal .. '&nbsp;<abbr title="'.. NomMonnaieLocale .. '">' .. AbrMonnaieLocale .. "</abbr>" .. '<span class="MonnaieRefEUR" style="display:none;"><small> (<abbr title="Les utilisateurs connectés peuvent choisir leur monnaie de référence via l’onglet préférences puis gadgets">~' .. formatted_PrixEnEuro  .. "&nbsp;€</abbr> - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCHF" style="display:none;"><small> (~' .. formatted_PrixEnCHF  .. "&nbsp;Fr. - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCAD" style="display:none;"><small> (~' .. formatted_PrixEnCAD  .. "&nbsp;$C - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefUSD" style="display:none;"><small> (~' .. formatted_PrixEnUSD  .. "&nbsp;$ - cours du "  .. DateCours  .. ")</small></span>" .. '<span class="MonnaieRefCFA" style="display:none;"><small> (~' .. formatted_PrixEnCFA  .. "&nbsp;F CFA - cours du "  .. DateCours  .. ")</small></span>"
                     end
                 else 
                 	 return formatted_PrixDeviseLocal .. ' <abbr title="'.. NomMonnaieLocale .. '">' .. AbrMonnaieLocale .. "</abbr>"
                 end
        else 
               local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [12] = true, [14] = true, [100] = true }
            if namespaceCategorisation[ mw.title.getCurrentTitle().namespace ] then
		    	Categorie = ' [[Catégorie:Page avec unité monétaire manquante ou inconnue]]' 
                return formatted_PrixDeviseLocal .. MonnaieErrorMess .. Categorie
            else
              return formatted_PrixDeviseLocal .. MonnaieErrorMess
			end
		end
	else
		return ' <span style="color:#ff0000">Utilisez le point comme marque de décimale</span>'
	end	
end

return p