Module:Multiparamètres : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
(code Lua pour Modèle:Multiparamètres)
 
(la fonction locale ne fonctionnait pas car pas de hoisting en Lua, mais finalement c'est bien comme ça, en propriété de l'objet principal)
 
(4 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
local p = {}
 
local p = {}
  
function p.main(frame)
+
function p.brut(frame)
 +
    return p._main(frame, function (item) return item end)
 +
end
 +
 
 +
function p.lien(frame)
 +
    return p._main(frame, function (item) return '[['..item..']]' end)
 +
end
 +
 
 +
function p.categorie(frame)
 +
    return p._main(frame, function (item) return '[[:Catégorie:'..item..'|'..item..']]' end)
 +
end
 +
 
 +
function p.utilisateur(frame)
 +
    return p._main(frame, function (item) return '[[Utilisateur:'..item..'|'..item..']]' end)
 +
end
 +
 
 +
function p._main(frame, formatter)
  
 
     local args = frame:getParent().args
 
     local args = frame:getParent().args
Ligne 12 : Ligne 28 :
 
         local item = trimFunc(v)
 
         local item = trimFunc(v)
 
         if item ~= '' then
 
         if item ~= '' then
 +
            item = formatter(item)
 
             if gras then
 
             if gras then
 
                 item = "'''" .. item .. "'''"
 
                 item = "'''" .. item .. "'''"

Version actuelle datée du 7 janvier 2017 à 02:02

La documentation pour ce module peut être créée à Module:Multiparamètres/doc

local p = {}

function p.brut(frame)
    return p._main(frame, function (item) return item end)
end

function p.lien(frame)
    return p._main(frame, function (item) return '[['..item..']]' end)
end

function p.categorie(frame)
    return p._main(frame, function (item) return '[[:Catégorie:'..item..'|'..item..']]' end)
end

function p.utilisateur(frame)
    return p._main(frame, function (item) return '[[Utilisateur:'..item..'|'..item..']]' end)
end

function p._main(frame, formatter)

    local args = frame:getParent().args
    local trimFunc = mw.text.trim -- cache accès global

    local gras = (args.gras and args.gras ~= '')
    local items = {}

    for i,v in ipairs(args) do
        local item = trimFunc(v)
        if item ~= '' then
            item = formatter(item)
            if gras then
                item = "'''" .. item .. "'''"
            end
            items[#items + 1] = item
        end
    end

    if #items == 0 then
        return ''
    elseif #items == 1 then
        return items[1]
    else
        -- le paramètre "et" peut être défini à vide, exemple : [[Modèle:Module biblio/responsabilité principale]]
        local dernierSeparateur = (args.et and args.et or 'et')

        return table.concat(items, ', ', 1, #items - 1) .. ' ' .. dernierSeparateur .. ' ' .. items[#items]
    end

end

return p