Este modulo implementa {{infobox}}
. Normalmente debería ser invocada directamente en las páginas de plantillas, mejor que usar la plantilla de infobox.
Los argumentos "parent" se incorporan automáticamente con los argumentos "passed" (los más nuevos sobrescriben a los antiguos) y todos los argumentos se normalizan para reducir los "whitespace" y definir los argumentos vacios como nil
.
Dependencias
- Módulo:Animate (cuando usa imágenes animadas)
- Módulo:Inventory slot (cuando usa invimages)
- Módulo:ProcessArgs
Ver también
- Minecraft
{{Bioma}}
{{Bloque}}
{{Efecto}}
{{Encantamiento}}
{{Entidad}}
{{EntidadObjeto}}
{{Estructura}}
{{Fase de desarrollo}}
{{Fluido}}
{{Objeto}}
- Minecraft Dungeons
{{DungeonsEncantamiento}}
{{DungeonsEntidad}}
{{DungeonsObjeto}}
- Minecraft Earth
{{EarthObjeto}}
- Otros
{{Álbum}}
{{Empresa}}
{{Música}}
{{Navegación de versión}}
{{Persona}}
{{Perfil}}
{{Programa}}
- Módulo:Infobox
[Ver | Editar | Purgar]La documentación arriba es transcluída desde Módulo:Infobox/doc.
local p = {}
function p.infobox( f )
local args = require( 'Módulo:ProcessArgs' ).merge( true )
local titleObject = mw.title.getCurrentTitle()
local title = args.title or titleObject.baseText
local imageArea = args.imagearea
if not imageArea and imageArea ~= 'none' then
local images = {}
local invImages = {}
local defaultImageSize = args.defaultimagesize or '150px'
args.image1 = args.image1 or args.image or 'title'
args.image1size = args.image1size or args.imagesize
args.invimage1 = args.invimage1 or args.invimage or 'title'
local imgCount = {}
local invImgCount = {}
for k, v in pairs( args ) do
if type( k ) == 'string' then
local image, num = k:match( '^(image)(%d+)$' )
local invImage, invNum = k:match( '^(invimage)(%d+)$' )
if v:lower() ~= 'none' then
if image then
table.insert( imgCount, tonumber( num ) )
elseif invImage then
table.insert( invImgCount, tonumber( invNum ) )
end
end
end
end
table.sort( imgCount )
local animate
for k, v in ipairs( imgCount ) do
local image = args['image' .. v]
local size = args['image' .. v .. 'size'] or defaultImageSize
if image == 'title' then
local imageTitle = mw.title.new( 'Media:' .. title .. '.png' )
if imageTitle and imageTitle.exists then
image = '[[File:' .. title .. '.png|' .. size .. ']]'
elseif titleObject.namespace == 0 then
image = '[[File:No image.svg|' .. size .. '|link=File:' .. title .. '.png|Subir ' .. title .. '.png]]'
else
image = '[[File:No image.svg|' .. size .. '|link=]]'
end
elseif image:match( ';' ) then
if not animate then
animate = require( 'Módulo:Animate' ).animate
end
image = animate{ image, size }
else
image = '[[File:' .. image .. '|' .. size .. ']]'
end
table.insert( images, '<div>' .. image .. '</div>' )
end
images = table.concat( images, '\n' )
if #invImgCount > 0 then
table.sort( invImgCount )
local slot
local invIds = mw.loadData( 'Module:InvSprite' ).ids
local invAliases = mw.loadData( 'Module:Inventory slot/Aliases' )
for k, v in ipairs( invImgCount ) do
local image = args['invimage' .. v]
if image == 'title' then
if invIds[title] or invAliases[title] then
image = title
else
image = false
end
end
if image == '----' then
table.insert( invImages, '</div><div style="padding-top:.5em">' )
elseif image then
if not slot then
slot = require( 'Módulo:Inventory slot' ).slot
end
table.insert( invImages, slot{ image, link = 'none' } )
end
end
if slot and #invImages > 0 then
invImages = '<div class="infobox-invimages"><div>' .. table.concat( invImages, '' ) .. '</div></div>'
else
invImages = ''
end
else
invImages = ''
end
if images ~= '' or invImages ~= '' then
imageArea = images .. '\n' .. invImages
else
imageArea = 'none'
end
end
if imageArea and imageArea ~= 'none' then
imageArea = '<div class="infobox-imagearea animated-container">' .. imageArea .. '</div>'
else
imageArea = ''
end
local footer = args.footer
if footer then
footer = '| class="infobox-footer" colspan="2" | ' .. footer
end
local html = {
'<div class="notaninfobox">',
'<div class="mcwiki-header infobox-title">' .. title .. '</div>',
imageArea,
'{| class="infobox-rows" cellspacing="1" cellpadding="4"',
'|-',
args.rows or '',
footer or '',
'|}',
'</div>'
}
return table.concat( html, '\n' )
end
return p