Module:Designation
De Wicri Chanson de Roland
La documentation pour ce module peut être créée à Module:Designation/doc
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 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 .. ' ' .. aParamSansNom[1]
end
if string.len( szMsg ) ~= 0 then
szCode = szMsg
end
return szCode
end
return p