Module:Utilisateur:François Melchior/Utile
La documentation pour ce module peut être créée à Module:Utilisateur:François Melchior/Utile/Documentation
local M = {}
function M.sprint_r(var, spaces)
if type(spaces) ~= "string" then spaces = "" end
if type(var) == "table" then
local r = {}
for k, v in pairs(var) do
if type(k) == "string" then k = '"' .. k .. '"' end
table.insert(r, "[" .. tostring(k) .. "]" .. " = " .. M.sprint_r(v, spaces .. " "))
end
return "{\n" .. spaces .. table.concat(r, ",\n" .. spaces) .. "\n" .. spaces .. "}"
elseif type(var) == "string" then
return '"' .. var .. '"'
else return tostring(var) end
end
--------------------------------------
-- TODO: rendre publique et modifier Module:Livre ?
-- Fonction accessoire renvoyant les paramètres
-- aussi bien lors d'un appel avec {{#invoke:}} que d'un appel sous Lua.
local function getArgs(...)
local args = {...}
if type(args[1]) == "table" and args[1]["args"] then
return args[1]["args"]
end
return args
end
--------------------------------------
function M.showIfExist(frame)
local page = mw.text.trim(frame.args[1] or "")
--[[ Ajoute l'espace de noms Modèle si aucun précisé.
local possibleNamespace = string.match(page, "^([^:/]*):")
if not (possibleNamespace == "" or mw.site.namespaces[possibleNamespace]) then
page = "Template:" .. page
end]]--Faut pas en fait!
-- 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))
-- <del>Utilisation d'une table pour ne pas avoir de problèmes de "%"</del>
-- Note: tostring car gsub renvoie 2 valeurs
end
-- Renvoie l'inclusion de la page sinon.
if t.namespace == 0 then page = ":" .. page end
--return mw.text.trim(frame:expandTemplate{title = page, args = templateArgs})
return tostring(string.gsub(frame:expandTemplate{title = page, args = templateArgs}, "\n$", ""))
end
M.afficheSiExiste = M.showIfExist -- alias
--[[
M.colorToHex
do
couleurPale = {
"rouge" => }
function M.lightColor(...)
local couleur = getArgs(...)[1]
end
end
M.couleurPale, M["Couleur pâle"], M["couleur pâle"]
= M.lightColor, M.lightColor, M.lightColor -- alias]]
return M