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