Module:Hello world
Sous-page de documentation. (modèle, bacasable)[modifier]
--Module:Classement musical : Importation direct du module:Langue et module:Pays
--Module:Protection : Insertion à la fin de <nowiki />
--Voir aussi modèle:Nom protégé
local p = {}
--Chargement du module de données
--local encHungMedien = mw.loadData('Module:Hello world2').encHungMedien
--Redéfinitions utiles
local format = mw.ustring.format
local insert = table.insert
local p = {}
local types = {
protection = {
image = 'Crystal Clear action lock1.png',
mode = 'protégée',
niveau = 'sysop'
},
semiProtection = {
categorie = 'Catégorie:Page semi-protégée',
texte = 'Cette page est semi-protégée.',
image = 'Crystal Clear action half lock.png',
mode = 'semi-protégée',
niveau = 'autoconfirmed'
},
semiProtectionLongue = {
image = 'Crystal Clear action half lock.png',
niveau = 'autoconfirmed'
},
['nomProtégé'] = {
image = 'Crystal Clear action lock5.png',
mode = 'nom protégé',
niveau = 'sysop'
},
}
function p.main(typeProtection, args)
local modeProtection = types[typeProtection]
local titrePage = mw.title.getCurrentTitle()
local res = {}
if typeProtection == 'protection' and args.nocat then
return bandeauProtection(typeProtection, titrePage)
end
if true or protectionPage(modeProtection, titrePage) then
--Création de l'icône de titre selon le mode de protection
insert(res, creerIconeTitre(modeProtection))
--Création du bandeau de protection pour le mode 'protection'
if typeProtection == 'protection' then
insert(res, bandeauProtection(typeProtection, titrePage))
end
--Catégorisation selon le mode de protection
insert(res, insertionCategorie(modeProtection, titrePage))
elseif not estSousPage(titrePage) then
--Catégorisation lorsque le niveau de protection en écriture ne
--correspond pas ou plus. Note : les sous-pages '/Documentation',
--'/Bac à sable' ou '/Test' appartenant aux modèles ou aux modules
--ne sont pas – et ne doivent pas être – concernées.
insert(res, '[[Catégorie:Page dont la protection est à vérifier]]')
end
return table.concat(res)
end
function protectionPage(modeProtection, titrePage)
--Fonction booléenne retournant vrai si la page courante
--est protégée et correspond au type de protection.
local niveauProtection = titrePage.protectionLevels.edit[1]
return modeProtection.niveau == niveauProtection
end
function estSousPage(titrePage)
--Fonction testant si la page actuelle est une sous-page /Documentation,
--/Bac à sable ou /Test de modèle ou de module. Elle retourne vrai si c'est
--le cas et faux sinon.
local espaceNom = titrePage.nsText == 'Modèle' or titrePage.nsText == 'Module'
local sousPage = titrePage.isSubpage and
(titrePage.subpageText == 'Documentation'
or titrePage.subpageText == 'Bac à sable'
or titrePage.subpageText == 'Test')
return espaceNom and sousPage
end
function creerIconeTitre(modeProtection)
local iconeTitre = require('Module:Hello world2')._main
local argsIcone = {
lien = format(':Catégorie:Page %s', modeProtection.mode),
image = modeProtection.image,
texte = format('Cette page est %s.', modeProtection.mode),
taille = 15
}
return iconeTitre(argsIcone)
end
function insertionCategorie(modeProtection, titrePage)
local espaceNom = titrePage.nsText
local lienCategorie = '[[Catégorie:%s %s]]'
if espaceNom ~= 'Modèle' and espaceNom ~= 'Module' then
espaceNom = 'Page'
end
return format(lienCategorie, espaceNom, modeProtection.mode)
end
function bandeauProtection(typeProtection, titrePage)
return 'Lorem ipsum dolor'
end
--Insertion dans la table p des fonctions appelées par les
--modèles à l'aide d'un adaptateur de fonction.
function adaptateur(nomFonction)
return function (frame)
local args = {}
local argsParent = frame:getParent().args
--Paramètres vides interprétés par Lua
for cle, val in pairs(argsParent) do
if val ~= '' then
args[cle] = mw.text.trim(val)
end
end
return p.main(nomFonction, args)
end
end
local nomsFonction = {'protection', 'semiProtection', 'semiProtectionLongue', 'nomProtégé'}
for _, nomFonction in ipairs(nomsFonction) do
p[nomFonction] = adaptateur(nomFonction)
end
return p