Module:Designation

La bibliothèque libre.
Documentation du module [voir] [modifier] [purger]
La documentation de ce module Scribunto écrit en Lua est incluse depuis sa sous-page de documentation.

Le module:Designation contient le code pertinent à des modèles servant à abréger des titres ({{Mgr}}, {{Mme}}...), des ordinaux ({{1er}}, {{2de}}…, IIe, XXe…) et toute autre abréviation mettant en exposant.

Module:Designation2 offre plus de possibilités.

Exemples[modifier]

Ce code dans un modèle
{{#invoke:Designation|Construire|un=M|deux=me|trois=Madame}}
donne
Mme
Au survol de « Mme », le mot « Madame » est affiché.


Ce code dans un modèle
{{#invoke:Designation|Construire|un=M|deux=me|trois=Madame|v=Sc}}
donne
Mme
Les lettres en exposant sont en petites capitales. Au survol de « Mme », le mot « Madame » est affiché.


Ce code dans un modèle
{{#invoke:Designation|Construire|un=M|deux=me|trois=Madame|v=S}}
donne
Mme
Les lettres en exposant sont soulignées. Au survol de « Mme », le mot « Madame » est affiché.


Ce code dans un modèle
{{#invoke:Designation|Construire|un=M.|deux=|trois=monsieur}}
donne
M.
Le paramètre deux est vide, ce que le module accepte. Au survol de « M. », le mot « monsieur » est affiché.
Les paramètres un, deux et trois peuvent être vides, mais doivent être nommés explicitement.

Paramètres dans l'appel de modèle[modifier]

Paramètres à passer au modèle :

  • <texte> (optionnel) : texte affiché à la suite du titre, les deux liés par une espace insécable

Paramètres dans le code du modèle[modifier]

Paramètres à passer au module (et non PAS au modèle) :

  • un=<texte> (obligatoire) : première partie de l'abréviation (peut être vide)
  • deux=<texte> (obligatoire) : deuxième partie de l'abréviation (peut être vide)
  • trois=<texte> (obligatoire) : message de l'infobulle (peut être vide)
  • v= (optionnel) : registre d'états, chaque état séparé par une virgule et autant d'espaces que souhaité (exemples : v=S, v=M, P,   Nx)
    • M (état optionnel) : mettre en minuscule les lettres du paramètre un
    • P (état optionnel) : insérer un point (.) entre les paramètres un et deux
    • Nx (état optionnel) : ne PAS mettre en exposant les lettres du paramètre deux
    • S (état optionnel) : souligner le texte du paramètre deux
    • Sc (état optionnel) : mettre en petites capitales (small caps) les lettres du paramètre deux

Vecteur de test[modifier]

Voir Utilisateur:Cantons-de-l'Est/Module/Designation

local p = {}
local szMsg = ''
local szCode = ''

function p.Construire( frame )

    local args = mw.getCurrentFrame():getParent().args

    -------------------------------------------------------
    -- Noter les paramètres sans nom dans l'appel du modèle
    -------------------------------------------------------
    local aParamSansNom = {}
    local nCnt = 0
    local szInfo = ''
    
    aParamSansNom[1] = ''
    aParamSansNom[2] = ''
    
    for i, v in ipairs(args) do
      if string.len( mw.text.trim(v) ) ~= 0  then
        if i == 1 then
        	aParamSansNom[i] = mw.text.trim(v)
        	nCnt = 1
        	szInfo = szInfo .. 'Paramètre ' .. i .. ' : ' .. aParamSansNom[i] .. '<br>\n'
        else
        	aParamSansNom[2] = aParamSansNom[2] .. mw.text.trim(v)
        end
      end
    end
    
    ----------------------------------------------------------
    -- Paramètres possibles : m, p, nx, s, sc
    ----------------------------------------------------------
    local szModeleUn =    frame.args.un     -- Première partie de l'abréviation
    local szModeleDeux =  frame.args.deux   -- Deuxième partie de l'abréviation
    local szModeleTrois = frame.args.trois  -- Un mot
    
    local szModeleV = '' -- Paramètres de mise en forme du texte
    if aParamSansNom[2] ~= nil then
    	szModeleV = mw.ustring.lower(aParamSansNom[2])
    end
    if frame.args.v ~= nil then
    	szModeleV = szModeleV .. ', ' .. frame.args.v
    end

    local bModeleM =  false  -- (m)  Première partie en minuscule, ou pas
    local bModeleP =  false  -- (p)  Insertion d'un point entre la première partie et la deuxième partie, ou pas
    local bModeleNx = false  -- (nx) Deuxième partie en NON eXposant, ou pas
    local bModeleS =  false  -- (s)  Deuxième partie soulignée, ou pas
    local bModeleSc = false  -- (sc) Deuxième partie en petites capitales, ou pas

    if string.find( szModeleV, 'm' )  then szModeleV = string.gsub( szModeleV, 'm', '' )  ; bModeleM = true  ; end
    if string.find( szModeleV, 'p' )  then szModeleV = string.gsub( szModeleV, 'p', '' )  ; bModeleP = true  ; end
    if string.find( szModeleV, 'nx' ) then szModeleV = string.gsub( szModeleV, 'nx', '' ) ; bModeleNx = true ; end
    if string.find( szModeleV, 'sc' ) then szModeleV = string.gsub( szModeleV, 'sc', '' ) ; bModeleSc = true ; end
    if string.find( szModeleV, 's' )  then szModeleV = string.gsub( szModeleV, 's', '' )  ; bModeleS = true  ; end
    
    if szModeleUn == nil or szModeleDeux == nil or szModeleTrois == nil then
      szMsg = '<span style="font-size:200%; color:red;">Dans le code du modèle, prière de saisir une valeur, même vide, pour chacun des paramètres <code>un</code>, <code>deux</code> et <code>trois</code>.</span>'
      szModeleUn = ''
      szModeleDeux = ''
      szModeleTrois = ''
    end

    ---------------------
    -- Créer le code HTML
    ---------------------
    -- Première partie en minuscule ?
    if bModeleM == true then 
      szModeleUn = mw.ustring.lower( szModeleUn )
    end

    -- Insertion d'un point entre la première partie et la deuxième partie ?
    if bModeleP == true then 
      szModeleUn = szModeleUn .. '.'
    end

	-- Deuxième partie vide, on ne génère pas de modificateurs
	if szModeleDeux ~= '' then
    	-- Deuxième partie soulignée ?
    	if bModeleS == true then 
        	szModeleDeux = '<span style="text-decoration: underline;">' .. szModeleDeux .. '</span>'
    	end

    	-- Deuxième partie en non exposant ?
    	if not(bModeleNx == true) then 
    		szModeleDeux = '<sup style="font-size:70%;">' .. szModeleDeux .. '</sup>'
    	end
    
    	-- Deuxième partie en petites capitales ?
    	if bModeleSc == true then 
    		szModeleDeux = '<span class=sc>' .. szModeleDeux .. '</span>'
    	end
    end

    szCode = szCode .. '<abbr class="abbr" title="' .. szModeleTrois .. '">' .. szModeleUn .. szModeleDeux .. '</abbr>'
    
    
    if nCnt == 1 then
    	szCode = szCode .. '&nbsp;' .. aParamSansNom[1]
    end

    if string.len( szMsg ) ~= 0 then
      szCode = szMsg
    end

    return szCode
end

return p