Différences entre les pages « Modèle:Multiparamètres-Lien » et « Module:Multiparamètres »

De Les Mots de l'agronomie
(Différence entre les pages)
imported>Jacques Ducloy
m (1 révision importée)
 
imported>Jacques Ducloy
m (1 révision importée)
 
Ligne 1 : Ligne 1 :
{{#invoke:Multiparamètres|lien}}<noinclude>{{Documentation}}</noinclude>
+
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

Version actuelle datée du 7 décembre 2020 à 17:43

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