Module:Designation

La bibliothèque libre.
Aller à la navigation Aller à la recherche
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 = ''
    for i, v in ipairs(args) do
      aParamSansNom[i] = mw.text.trim(v)
      if string.len( mw.text.trim(v) ) ~= 0  then
        aParamSansNom[i] = mw.text.trim(v)
        nCnt = nCnt + 1
        szInfo = szInfo .. 'Paramètre ' .. i .. ' : ' .. aParamSansNom[i] .. '<br>\n'
      end
-- szCode = szCode .. i .. ' : ' .. aParamSansNom[i] .. '<br>\n'
    end

    if nCnt > 1 then
      szMsg = '<span style="font-size:200%; color:red;">Prière de saisir un seul texte.</span>' .. '<br>\n' .. szInfo
    end
    

    ----------------------------------------------------------
    -- Noter les paramètres nommés dans le code du modèle :
    --    |un=M    |deux=me   |trois=Madame   |v=(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 =     frame.args.v      -- Registre d'états des parties de l'abréviation

    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 szModeleV ~= nil then
      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 string.len( szModeleV ) ~= 0  then
        szMsg = '<span style="font-size:200%; color:red;">Dans le code du modèle, au moins un état du registre <code>v</code> est inconnu : <code>' .. szModeleV .. '</code>.</span>'
        szModeleUn = ''
        szModeleDeux = ''
        szModeleTrois = ''
      end
    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 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
    
    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