Aller au contenu

Module:Taille fichier

Une page de Wikipédia, l'encyclopédie libre.

 Documentation[voir] [modifier] [historique] [purger]

Utilisation

[modifier le code]

Ce module est utilisé par le modèle {{Taille fichier}}.

-- luacheck: globals mw

local p = {}

function p.main( frame )
	local args = frame.args

	local argNumber = mw.text.trim( args[ 1 ] )
	local argUnit = mw.text.trim( args[ 2 ] )

	-- note the extra parentheses to avoid the 2nd value returned by string.gsub()
	local number = tonumber( ( argNumber:gsub( ',', '.' ) ) )

	if number == nil then
		return p._message_erreur( 'Le premier paramètre n\'est pas un nombre valide : ' .. mw.text.nowiki( argNumber ) )
	end

	local units = {
		ko  = { name = 'kilooctet', symbol = 'ko'  }, -- « ko » est bien en minuscules, voir [[wikt:ko]]
		mo  = { name = 'mégaoctet', symbol = 'Mo'  },
		go  = { name = 'gigaoctet', symbol = 'Go'  },
		to  = { name = 'téraoctet', symbol = 'To'  },
		kio = { name = 'kibioctet', symbol = 'Kio' },
		mio = { name = 'mébioctet', symbol = 'Mio' },
		gio = { name = 'gibioctet', symbol = 'Gio' },
		tio = { name = 'tébioctet', symbol = 'Tio' },
	}

	local unit = units[ argUnit:lower() ]

	if unit == nil then
		return p._message_erreur( 'Le second paramètre n\'est pas une unité reconnue : ' .. mw.text.nowiki( argUnit ) )
	end

	local abbrTitle = unit.name .. ( number < 2 and '' or 's' )
	local unitAbbr = '<abbr class="abbr" title="' .. abbrTitle .. '">' .. unit.symbol .. '</abbr>'

	return '<span style="font-size:88%">('
		.. mw.getContentLanguage():formatNum( number ) .. '\194\160' .. unitAbbr
		.. ')</span>'
end

function p._message_erreur( message )
	return '<span class="error">' .. message .. '</span>'
end

return p