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

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

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