Module:Designation2
Apparence
La documentation pour ce module peut être créée à Module:Designation2/doc
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