Module:Designation2
La documentation de ce module Scribunto écrit en Lua est incluse depuis sa sous-page de documentation.
![Logo du langage Lua.](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Lua-Logo.svg/40px-Lua-Logo.svg.png)
{{Module|nom du module}}
· {{Modèle utilisant les modules Lua}}
Modules de base :
Documentation module
· String
· List
· Wikibase
· TNT
Le module:Designation (version 2) 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.
Exemples
modifier- Ce code dans un modèle
-
{{#invoke:Designation2|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:Designation2|Construire|un=M|deux=me|trois=Madame|r=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:Designation2|Construire|un=M|deux=me|trois=Madame|r=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:Designation2|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
ettrois
peuvent être vides, mais doivent être nommés explicitement.
Paramètres dans l'appel de modèle
modifierParamè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
modifierParamè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)r=
(optionnel) : registre d'états, chaque état séparé par une virgule et autant d'espaces que souhaité (exemples :r=s
,r=m, p, nx
)m
(état optionnel) : mettre en minuscule les lettres du paramètreun
p
(état optionnel) : insérer un point (.
) entre les paramètresun
etdeux
nx
(état optionnel) : ne PAS mettre en exposant les lettres du paramètredeux
s
(état optionnel) : souligner le texte du paramètredeux
sc
(état optionnel) : mettre en petites capitales (small caps) les lettres du paramètredeux
Vecteur de test
modifierVoir Utilisateur:Cantons-de-l'Est/Module/Designation2
local p = {}
local szMsg = ''
local szCode = ''
function p.Construire( frame )
-------------------------------------------------------
-- Noter les paramètres sans nom dans l'appel du modèle
-------------------------------------------------------
local args = mw.getCurrentFrame():getParent().args
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 états dans l'appel du modèle :
-- |r=m, p, nx, s, sc
--------------------------------------------------------
local szAppelR = args['r'] -- Registre d'états des parties de l'abréviation
local bAppelM = false -- (m) Première partie en minuscule, ou pas
local bAppelP = false -- (p) Insertion d'un point entre la première partie et la deuxième partie, ou pas
local bAppelNx = false -- (nx) Deuxième partie en NON eXposant, ou pas
local bAppelS = false -- (s) Deuxième partie soulignée, ou pas
local bAppelSc = false -- (sc) Deuxième partie en petites capitales, ou pas
if szAppelR ~= nil then
local t = mw.text.split( szAppelR, ',', plain )
local bIsExtra = false
local sz = ''
for k, v in ipairs(t) do
sz = mw.text.trim(v)
if sz == 'm' then bAppelM = true
elseif sz == 'p' then bAppelP = true
elseif sz == 'nx' then bAppelNx = true
elseif sz == 's' then bAppelS = true
elseif sz == 'sc' then bAppelSc = true
elseif sz == '' then -- état blanc/nul ; ignorer pcq peut-être en test
else bIsExtra = true
end
end
if bIsExtra == true then
szMsg = '<span style="font-size:200%; color:red;">Au moins un état du registre <code>r</code> est inconnu : <code>' .. szAppelR .. '</code>.</span>'
end
end
------------------------------------------------------------
-- Noter les paramètres nommés dans le code du modèle :
-- |un=M |deux=me |trois=Madame
-- Noter les états dans le code du modèle :
-- |r=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 szModeleR = frame.args.r -- 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 szModeleR ~= nil then
local t = mw.text.split( szModeleR, ',', plain )
local bIsExtra = false
local sz = ''
for k, v in ipairs(t) do
sz = mw.text.trim(v)
if sz == 'm' then bModeleM = true
elseif sz == 'p' then bModeleP = true
elseif sz == 'nx' then bModeleNx = true
elseif sz == 's' then bModeleS = true
elseif sz == 'sc' then bModeleSc = true
elseif sz == '' then -- état blanc/nul ; ignorer pcq peut-être en test
else bIsExtra = true
end
end
if bIsExtra == true then
szMsg = '<span style="font-size:200%; color:red;">Dans le code du modèle, au moins un état du registre <code>r</code> est inconnu : <code>' .. szModeleR .. '</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 or szAppelM ~= nil or bAppelM == 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 or szAppelP ~= nil or bAppelP == true then
szModeleUn = szModeleUn .. '.'
end
-- Deuxième partie soulignée ?
if bModeleS == true or szAppelS ~= nil or bAppelS == true then
szModeleDeux = '<span style="text-decoration: underline;">' .. szModeleDeux .. '</span>'
end
-- Deuxième partie en non exposant ?
if not(bModeleNx == true or szAppelNx ~= nil or bAppelNx == true) then
szModeleDeux = '<sup style="font-size:70%;">' .. szModeleDeux .. '</sup>'
end
-- Deuxième partie en petites capitales ?
if bModeleSc == true or szAppelSc ~= nil or bAppelSc == 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 .. ' ' .. aParamSansNom[1]
end
if string.len( szMsg ) ~= 0 then
szCode = szMsg
end
return szCode
end
return p