« Module:Image » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 106 : | Ligne 106 : | ||
end | end | ||
table.insert( wiki, legende ) | table.insert( wiki, legende ) | ||
return '[[Fichier:' .. table.concat( wiki, '|' ) .. ']]' | return '[[Fichier:' .. table.concat( wiki, '|' ) .. ']]' | ||
end | end | ||
| Ligne 126 : | Ligne 126 : | ||
return p.image( args ) | return p.image( args ) | ||
end | |||
function p.imageJob( rawArgs ) | |||
local argsList = { 'image', 'format', 'upright', 'taille', 'border', 'légende', 'alt', 'link', 'page', 'class', 'lang', 'align', 'valign' } | |||
local args = {} | |||
for _, v in ipairs( argsList ) do | |||
args[ v ] = trim( rawArgs[ v ] ) | |||
end | |||
if not args.image then | |||
return | |||
end | |||
-- analyse du nom de fichier | |||
local image = args.image | |||
:gsub( '%[%[[%s_]*[Cc]atégorie[%s_]*:.-%]%]', '' ) | |||
:gsub( '%[%[[%s_]*[Cc]ategory[%s_]*:.-%]%]', '' ) | |||
:gsub( '%[%[[Ff]ichier:([^|%[%]]+).+', '%1' ) | |||
:gsub( '%[%[[Ii]mage:([^|%[%]]+).+', '%1' ) | |||
:gsub( '%[%[[Ff]ile:([^|%[%]]+).+', '%1' ) | |||
-- analyse de la légende | |||
local legende = args[ 'légende' ] and args[ 'légende' ] | |||
:gsub( '%[%[[%s_]*[Cc]at[ée]gor[yi]e?[%s_]*:.-%]%])', '' ) | |||
-- analyse de la taille | |||
local taille = args.taille and args.taille:gsub( '%s', '' ):gsub( '(%d)$', '%1px' ) | |||
if taille and not ( taille:match '%d+x?%d*px' or taille:match 'x%d+px' ) then | |||
taille = nil | |||
end | |||
-- analyse de l'alternative | |||
local alt = nettoyageAlt( args.alt ) | |||
-- génération du lien | |||
local wiki = { image } | |||
table.insert( wiki, valide( args.format, { 'thumb', 'frameless', 'frame', 'vignette', 'sanscadre', 'cadre', 'thumbnail', } ) ) | |||
table.insert( wiki, args.border and 'border' ) | |||
table.insert( wiki, taille ) | |||
if tonumber( args.upright ) | |||
and not taille | |||
and valide(args.format, { 'thumb', 'vignette', 'thumbnail', 'frameless', 'sanscadre', } ) | |||
then | |||
table.insert( wiki, 'upright=' .. args.upright ) | |||
end | |||
table.insert( wiki, valide( args.align, { 'left', 'right', 'center', 'none', 'gauche', 'droite', 'centre', 'centré' } ) ) | |||
table.insert( wiki, valide( args.valign, { 'top', 'text-top', 'super', 'baseline', 'sub', 'middle', 'text-bottom', 'bottom', 'haut', 'haut-texte', 'sup', 'base', 'milieu', 'bas-texte', 'bas', } ) ) | |||
table.insert( wiki, alt and 'alt=' .. alt ) | |||
table.insert( wiki, args.link and 'link=' .. args.link ) | |||
table.insert( wiki, args.page and 'page=' .. args.page ) | |||
table.insert( wiki, args.class and 'class=' .. args.class ) | |||
if args.lang and image:match( '.svg' ) then | |||
table.insert( wiki, 'lang=' .. args.lang ) | |||
end | |||
table.insert( wiki, legende ) | |||
return table.concat( wiki, '|' ) | |||
end | end | ||