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

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
système plus évolué, permettant ici de répéter l'item
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
 
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

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