Module:Multiparamètres : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
(hotfix)
(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)
 
(Une révision intermédiaire par le même utilisateur non affichée)
Ligne 2 : Ligne 2 :
  
 
function p.brut(frame)
 
function p.brut(frame)
     return p.main(frame, '', '')
+
     return p._main(frame, function (item) return item end)
 
end
 
end
  
 
function p.lien(frame)
 
function p.lien(frame)
     return p.main(frame, '[[', ']]')
+
     return p._main(frame, function (item) return '[['..item..']]' end)
 
end
 
end
  
 
function p.categorie(frame)
 
function p.categorie(frame)
     return p.main(frame, '[[:Catégorie:', ']]')
+
     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, '[[Utilisateur:', ']]')
+
     return p._main(frame, function (item) return '[[Utilisateur:'..item..'|'..item..']]' end)
 
end
 
end
  
function p.main(frame, prefixe, suffixe)
+
function p._main(frame, formatter)
  
 
     local args = frame:getParent().args
 
     local args = frame:getParent().args
Ligne 28 : Ligne 28 :
 
         local item = trimFunc(v)
 
         local item = trimFunc(v)
 
         if item ~= '' then
 
         if item ~= '' then
             item = prefixe .. item .. suffixe
+
             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