Aller au contenu

Module:P.

Cette page est protégée.
Une page de Wikipédia, l'encyclopédie libre.

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

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

local p = {}

local function abbr( texte, signification )
	return '<abbr class="abbr" title="' .. signification .. '">' .. texte .. '</abbr>'
end

local function nobr( texte )
	return '<span class="nowrap">' .. texte .. '</span>'
end

function p.main( frame )
	local value = frame.args[ 'optionalValue' ]

	-- utilisation sans paramètre
	if value == '' then
		return abbr( 'p.', 'page(s)' ) .. '&nbsp;'
	end

	-- code inspiré de [[Module:Biblio/Commun]].formatePassage (mais adapté et simplifié)

	-- nombre entier
	if value:match( '^[%dIVXLCDM]+$' ) then -- uniquement des chiffres (arabes ou romains)
		return abbr( 'p.', 'page' ) .. '&nbsp;' .. value -- nobr() serait inutile ici

	-- intervalle
	elseif value:match( '^%d+ ?%- ?%d+$' ) -- "tiret du 6" (noter que c'est un caractère à escaper dans les regexes Lua)
	or value:match( '^%d+ ?– ?%d+$' ) -- tiret moyen (attention, c'est un caractère sur 3 octets)
	or value:match( '^[IVXLCDM]+ ?%- ?[IVXLCDM]+$' ) -- même chose avec les nombres romains
	or value:match( '^[IVXLCDM]+ ?– ?[IVXLCDM]+$' ) then
		return abbr( 'p.', 'pages' ) .. '&nbsp;'.. nobr( value ) -- nobr() pour que la valeur soit insécable

	-- toute autre valeur
	else
		return abbr( 'p.', 'page(s)' ) .. '&nbsp;' .. value -- pas de nobr(), au cas où la valeur serait longue
	end
end

return p