« Module:Multiparamètres » : différence entre les versions

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
 
0x010D (discussion | contributions)
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 versions 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 .. "'''"

Dernière version du 7 janvier 2017 à 02:02

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 ''..item..'' end)

end

function p.utilisateur(frame)

   return p._main(frame, function (item) return ''..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