« Module:Multiparamètres » : différence entre les versions
Aller à la navigation
Aller à la recherche
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 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. | return p._main(frame, function (item) return item end) | ||
end | end | ||
function p.lien(frame) | function p.lien(frame) | ||
return p. | return p._main(frame, function (item) return '[['..item..']]' end) | ||
end | end | ||
function p.categorie(frame) | function p.categorie(frame) | ||
return p. | return p._main(frame, function (item) return '[[:Catégorie:'..item..'|'..item..']]' end) | ||
end | end | ||
function p.utilisateur(frame) | function p.utilisateur(frame) | ||
return p. | return p._main(frame, function (item) return '[[Utilisateur:'..item..'|'..item..']]' end) | ||
end | end | ||
function p. | 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 = | 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