Module:Pagesincat
Utilisation
modifierListe des fonctions exportées par le module sous la forme :
pagesincat(frame)
– retourne le nombre de pages dans une catégorie
Modules externes et autres éléments dont ce module a besoin pour fonctionner :
- mw.title, mw.language, mw.site
Détails et fonctions internes
erreur(texte)
– retourne une mise en forme de texte sous forme d'erreur, dans un <span class="error"></span>
pagesincat(frame)
– retourne le nombre de pages dans une catégorie- paramètres : tous les paramètres issus de frame:getParent().args sauf le paramètre nommé type qui est d'abord testé en provenance du modèle (pour permettre une surcharge) puis seulement de l'appel au modèle.
- paramètre non nommé (le seul) : le nom de la catégorie dont on veut le nombre de pages, sans l'extension Catégorie:. Si ce paramètre n'est pas indiqué le nom de la page où le modèle est appelé est utilisée. Si cette page n'est pas une catégorie une erreur est générée.
- type=Type : type de pages à décompter : tous ; cats ; fichiers ; pages. Si non précisé tous est utilisé
- mise en forme=oui : si ce paramètre est non vide le nombre retourné est mis en forme selon les critères de la langue courante (séparateur de miliers)
- éléments techniques :
- utilise
mw.title.getCurrentTitle()
pour connaître l'espace de nom (.namespace) et le nom (.text) de la page courante, si le nom n'est pas passé en paramètre - utilise
mw.site.stats.pagesInCategory()
pour obtenir le compte des pages dans une catégorie - utilise
mw.getContentLanguage():formatNum()
pour formater selon les conventions locales le nombre retourné, si la mise en forme est demandée - retourne une erreur si
mw.site.stats.pagesInCategory()
échoue. Est-ce que cela peut se produire ?
- utilise
- paramètres : tous les paramètres issus de frame:getParent().args sauf le paramètre nommé type qui est d'abord testé en provenance du modèle (pour permettre une surcharge) puis seulement de l'appel au modèle.
-- module reproduisant le comportement de {{PAGESINCATEGORY}}
-- sans le bug
local p = {}
-- génère une erreur
function p.erreur(texte)
return '<span class="error">' .. (texte or "''aucune erreur indiquée''") .. "</span>"
end
-- pour tester la fonctionnalité "pageincategory"
function p.pagesincat(frame)
-- le nom de la catégorie
local args = ( frame.getParent and frame:getParent().args ) or frame -- préparation pour appel par modèle ou direct.
local cat = args[1]
-- le type de demande
local arg = (frame.args and frame.args["type"]) or args["type"]
-- mise en forme des nombres ?
local mef = args["mise en forme"] or args["mise_en_forme"]
local sel -- la sélection
-- en l'absence de nom de catégorie on utilise la page courante
if (cat == nil or cat == "") then
local titre = mw.title.getCurrentTitle()
-- on vérifie qu'on est une catégorie
if (titre.namespace ~= 14) then
return p.erreur("Pas de nom de page indiqué et la page courante n'est pas une catégorie")
end
-- on utilise le titre de la page courante
cat = mw.title.getCurrentTitle().text
end
-- on regarde le paramètre
if (arg == "tous" or arg == nil or arg == "*") then
sel = "all"
elseif (arg == "cats") then
sel = "subcats"
elseif (arg == "fichiers") then
sel = "files"
elseif (arg == "pages") then
sel = "pages"
else
return p.erreur("paramètre '" .. (arg or "<nil>") .. "' non reconnu")
end
local res = mw.site.stats.pagesInCategory(cat, sel)
if (res == nil) then
return p.erreur("erreur de récupération des informations")
end
-- si mise en forme on applique
if (mef ~= nil) then
return mw.getContentLanguage():formatNum(res)
else
return tostring(res)
end
end
return p