Module:Multiparamètres : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
(système plus évolué, permettant ici de répéter l'item)
(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)
 
Ligne 2 : Ligne 2 :
  
 
function p.brut(frame)
 
function p.brut(frame)
     return p.main(frame, function (item) return item end)
+
     return p._main(frame, function (item) return item end)
 
end
 
end
  
 
function p.lien(frame)
 
function p.lien(frame)
     return p.main(frame, function (item) return '[['..item..']]' end)
+
     return p._main(frame, function (item) return '[['..item..']]' end)
 
end
 
end
  
 
function p.categorie(frame)
 
function p.categorie(frame)
     return p.main(frame, function (item) return '[[:Catégorie:'..item..'|'..item..']]' end)
+
     return p._main(frame, function (item) return '[[:Catégorie:'..item..'|'..item..']]' end)
 
end
 
end
  
 
function p.utilisateur(frame)
 
function p.utilisateur(frame)
     return p.main(frame, function (item) return '[[Utilisateur:'..item..'|'..item..']]' end)
+
     return p._main(frame, function (item) return '[[Utilisateur:'..item..'|'..item..']]' end)
 
end
 
end
  
function p.main(frame, formatter)
+
function p._main(frame, formatter)
  
 
     local args = frame:getParent().args
 
     local args = frame:getParent().args

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