|
|
| 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 128 : |
Ligne 128 : |
| end | | 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
| |
|
| |
| function p.infoboxJob( frame )
| |
| local args = frame.args
| |
|
| |
| local taille = args.taille:gsub( '%D', '' )
| |
| taille = tonumber( taille ) or 280
| |
| return p.image( args )
| |
| end
| |
|
| |
|
| return p | | return p |