Module:Utile
- Cette documentation est incluse depuis Module:Utile/Documentation. [rafraîchir] · [modifier] · [historique]
Ce module fournit la fonction suivante :
{{#invoke:Utile|afficheSiExiste|page| ... |texte alternatif}}
-
- Cette fonction transclut la page donnée si elle existe, en lui transmettant les autres paramètres éventuels (nommés et non nommés) sauf le dernier ; si elle n’existe pas, le texte alternatif (dernier paramètre non nommé) sera renvoyé.
La séquence spéciale{{_}}
sera remplacée dans le texte alternatif par page, et{{_|parser function|paramètre}}
sera remplacée par l’appel à la parser function correspondante avec comme paramètres page et le paramètre éventuel ; par exemple, si page estAbcd
,{{_|urlencode|WIKI}}
donnera le même résultat que{{urlencode:Abcd|WIKI}}
. - Alias :
showIfExist
.
- Cette fonction transclut la page donnée si elle existe, en lui transmettant les autres paramètres éventuels (nommés et non nommés) sauf le dernier ; si elle n’existe pas, le texte alternatif (dernier paramètre non nommé) sera renvoyé.
local M = {}
function M.showIfExist(frame)
local page = mw.text.trim(frame.args[1] or "")
-- Crée un objet title pour la page demandée, ou un faux si le titre n'est pas valide.
local t = mw.title.new(page) or {id = 0}
-- Crée une copie des paramètres pour le modèle.
local templateArgs = {}
local l = 1
for k, v in pairs(frame.args) do
if type(k) == "number" then
if k > l then
l = k - 1
templateArgs[l] = v
end
else templateArgs[k] = v end
end
local alternative = mw.text.trim(templateArgs[l] or "")
templateArgs[l] = nil
local remplacement = function(capture)
if capture == "" then return page end
local parserFunctions = {
["localurl"] = true, ["fullurl"] = true,
["canonicalurl"] = true, ["filepath"] = true,
["urlencode"] = true
}
local arg
local avecArg = string.find(capture, "|", 1, true)
if avecArg then
arg = string.sub(capture, avecArg + 1)
capture = string.sub(capture, 1, avecArg - 1)
end
if parserFunctions[capture] then
return frame:callParserFunction(capture, page, arg)
end
end
-- Renvoie le texte alternatif si la page n'existe pas.
if t.id == 0 then
return tostring(string.gsub(alternative,"{{_|?([^}]*)}}", remplacement))
-- Note: tostring car gsub renvoie 2 valeurs
end
-- Renvoie l'inclusion de la page sinon.
if t.namespace == 0 then page = ":" .. page end
return tostring(string.gsub(frame:expandTemplate{title = page, args = templateArgs}, "\n$", ""))
-- Note: tostring car gsub renvoie 2 valeurs
end
M.afficheSiExiste = M.showIfExist -- alias
return M