Módulu:Ficha
Usu
editarEsti módulu ye pa crear una ficha xenérica pa que la puedan usar otros módulos o plantíes pa crear fiches específiques. Los argumentos d'esti módulu tán traducíos al asturianu colos mesmos nomes que na plantía:Ficha de manera que pueden usase direutamente como parámetros.
Pa invocalu nes plantíes {{#invoke:Ficha|Infobox}}
Parámetros
editarNotes:
- Los parámetros qu'incluyan
<númberu>
, indiquen que tien d'escribise al final del parámetru un númberu del 1 al ∞. Por exemplu, el códigu «|estilusección65 = font-style: italic;
» establecería l'estilu tipográficu de la sección 65 como cursiva. - Si se define una sección, nun tien d'usase'l mesmu númberu de la sección nos campos d'etiquetes o datos; si se fai, nun s'amosará'l conteníu d'estos campos.
Títulu y subtítulos
editarRecomiéndase siempre dar un títulu a la ficha. Tamién pueden ponese subtítulos a la ficha.
titulu
: Títulu qu'apaecerá na cabecera.subtitulu<número>
: Subtítulos de la ficha.arriba
: Fila de la parte superior.
- Configuración
-
colorfondu
: Color del fondu de la cabecera.colortestu
: Color del testu de la cabecera.tipucabecera
: Tipu d'imaxe qu'apaecerá de fondu na cabecera.
Imáxenes
editarToles imáxenes céntrense de manera predeterminada. Solo tien d'especificase'l nome de les imáxenes. Por exemplu: «example.png». Si'l valor nun coincide con una imaxe esistente; por exemplu, si s'emplega una plantía amosaráse solo el valor lliteral.
imaxe<númberu>
: Imáxenes de la ficha. Tien un númberu sin llende; se comprueba si la imaxe existe y, de lo contrario, devuelve el valor lliteral (pensao para puedan usase plantíes).imaxeizquierda
/imaxederecha
: Apaecerán una xunto a la otra centráu el conxuntu dambes si se dan les dos, o centrada una sola imaxe si se da solo una.imaxeinferior
: Imaxe qu'apaecerá al pie de la ficha.
- Toos tien los siguiente parámetros adicionales
-
tamañuimaxe<numberu>
: Tamañu de la imaxe. (Si se pon númberu solo afeutará a esa imaxe)tamañuimaxeizquierda
: Tamañu de la imaxe izquierda.tamañuimaxederecha
: Tamañu de la imaxe derecha.tamañuimaxeinferior
: Tamañu de la imaxe de pie de tabla.pie<númberu>
: Pie de imaxe (si se pon númberu solo afeutará a esa imaxe).piederechu
: Pie de la imaxe derecha.pieizquierdu
: Pie de la imaxe izquierda. (si se pon númberu solo afeutará a esa imaxe)pieimaxeinferior
: Pie de la imaxe de pie de tabla.
Estilos CSS
editarEstos parámetros úsense p'amestar códigu CSS nel atributu «style» de los elementos de la plantía; son los que permiten cambiar l'aspeutu d'estos elementos. Poro, tendrán d'usase con procuru para mantener un aspectu xeneral estéticu y atrayente.
clas
: Clas (class) de tola ficha.estilu
: Estilu de tola fichaclasfila<númberu>
: Sin númberu, clas de toles files; con númberu, clas d'esa fila.clastitulu
: Clas de la cabecera. Establez la imaxe de la cabecera. Pa usar cabecera mediana añadirMedia=si
.estilutitulu
:classubtitulu<número>
estilusubtitulu<número>
clasimaxe
estiluimaxe
estiluetiqueta<númberu>
estiludatos<númberu>
Campos
editarUna fila con etiqueta pero sin campu de datos nun s'amuesa. Esto facilita la creación de files opcionales. Pa facer una fila opcional tien qu'incluise un parámetru que predetermine'l conteníu de la fila a una cadena vacia:
datosup<númberu>
: Files qu'apaecerán ente Imaxeizquierda/derecha ya imaxe.seccion<númberu>
etiqueta<númberu>
datos<númberu>
Otros campos
editarpiedetabla
: Pie de la ficha. De vezu esti espaciu acútase pa notes.nome
: Nome de la plantía qu'enllazará na barra de navegación.
--
-- Esti módulu ye pa implementar en {{Ficha}}
--
local p = {}
local HtmlBuilder = require('Módulu:HtmlBuilder')
local CategorizacionAByAD = require('Módulu:Categorización de bonos y destacaos')
local marco = {}
local args
local root
local anchoImagen = '245px'
function union(t1, t2)
-- devuelve la xuntanza de los valores de dos tables, como una secuencia
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
local function depurarVacias(contenido)
if contenido and contenido ~= '' then
return contenido
end
end
local function getArgNums(prefix)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
local function anadirfila(rowArgs)
if rowArgs.seccion then
root
.tag('tr')
.tag('th')
.attr('colspan', 3)
.addClass(rowArgs.clasefila)
.css('text-align', 'center')
.cssText(rowArgs.estiloseccion or args.estiloseccion)
.wikitext(rowArgs.seccion)
elseif rowArgs.datos then
local fila = root.tag('tr')
fila.addClass(rowArgs.clasefila)
if rowArgs.etiqueta then
fila
.tag('th')
.attr('scope', 'row')
.css('text-align', 'left')
.addClass(rowArgs.clasefila)
.cssText (rowArgs.estiloetiqueta or args.estiloetiqueta)
.wikitext(rowArgs.etiqueta)
.done()
end
local datosCelula = fila.tag('td')
if rowArgs.etiqueta then
datosCelula
.attr('colspan', 2)
else
datosCelula
.attr('colspan', 3)
.css('text-align', 'center')
end
datosCelula
.addClass(rowArgs.clase)
.cssText (rowArgs.estilodatos or args.estilodatos)
-- Amiéstase un saltu de llinia porque si nun se fai d'esta miente y por exemplu nos
-- datos hai una llista con asteriscos nel primer elementu amuésase
-- un asteriscu.
-- Ye un fallu que yá asocede con tables normales ensin LUA. Por exemplu
-- {|
-- | * elementu1
-- * elementu2
-- |}
-- El saltu de llinia yá se producía na plantía Ficha/filera
.wikitext('\n' .. rowArgs.datos)
--.newline()
end
end
local function hacerTitulo() -- Testera de la ficha
if not args.titulo then return end
local cabecera = {}
if args.media == 'si' and args.clasetitulo then
cabecera = 'media ' .. args['clasetitulo']
elseif args.media == 'si' then
cabecera = 'media '
elseif args.tipocabecera then
cabecera = 'cabecera ' .. args.tipocabecera
elseif args.clasetitulo then
cabecera = 'cabecera ' .. args.clasetitulo
else
cabecera = 'cabecera '
end
root
.tag('tr')
.tag('th')
.attr('colspan', 3)
.addClass(cabecera)
.css('text-align', 'center')
.css('background-color', args.colorfondo or args.colorfondotitulo or 'transparent')
.css('color', args.colortexto or 'black')
.cssText(args.estilotitulo)
.wikitext(args.titulo)
end
local function hacerFilaArriba()
if not args.arriba and not args.titulo2 then return end
root
.tag('tr')
.tag('th')
.attr('colspan', 3)
.addClass(args.clasearribaor or args.clasetitulo2)
.css('text-align', 'center')
.css('font-size', '125%')
.css('font-weight', 'bold')
.cssText(args.estiloarriba or args.estilotitulo2)
.wikitext(args.arriba or args.titulo2)
end
local function hacerPieDeTabla()-- Pie de tabla, aparecerá embaxo la ficha
if not args.piedetabla then return end
root
.tag('tr')
.tag('td')
.attr('colspan', '3')
.addClass(args.clasepiedetabla)
.css('text-align', 'center')
.cssText(args.estilopiedetabla)
.wikitext(args.piedetabla)
end
local function hacerImagenInferior()-- Imaxe qu'aparecerá na parte inferior de la tabla
if not args.imageninferior then return end
imageninferior = {}
if args['tamañoimageninferior'] == nil or args['tamañoimageninferior'] == '' then
args['tamañoimageninferior'] = anchoImagen
end
if string.find(args.imageninferior, '[{[]') == nil then
imageninferior = ('[[Archivu:' .. args.imageninferior .. '|'.. args['tamañoimageninferior'] .. ']]' )
else
imageninferior = args.imageninferior
end
root
.tag('tr')
.tag('td')
.attr('colspan', '3')
.addClass(args.claseimageninferior)
.css('text-align', 'center')
.cssText(args.estiloimageninferior)
.newline()
.wikitext(imageninferior)
.tag('br', {selfClosing = true})
.done()
.tag('span')
.cssText(args.estilopieinferior)
.wikitext(args.pieinferior)
.newline()
end
local function hacerImagenSuperior()-- Imaxe qu'aparecerá na parte superior de la tabla
if not args.imagensuperior then return end
if args['tamañoimagensuperior'] == nil or args['tamañoimagensuperior'] == '' then
args['tamañoimagensuperior'] = anchoImagen
end
imagensuperior = {}
if string.find(args.imagensuperior, '[{[]') == nil then
imagensuperior = ('[[Archivu:' .. args.imagensuperior .. '|'.. args['tamañoimagensuperior'] .. ']]' )
else
imagensuperior = args.imagensuperior
end
root
.tag('tr')
.tag('td')
.attr('colspan', '3')
.addClass(args.claseimagensuperior)
.css('text-align', 'center')
.cssText(args.estiloimagensuperior)
.newline()
.wikitext(imagensuperior)
.tag('br', {selfClosing = true})
.done()
.tag('span')
.cssText(args.estilopiesuperior)
.wikitext(args.piesuperior)
.newline()
end
local function hacerSubtitulos()-- Subtítulos de la ficha
if args.subtitulo then
args.subtitulo1 = args.subtitulo
end
if args.clasesubtitulo then
args.clasesubtitulo1 = args.clasesubtitulo
end
local subtitulonumero = getArgNums('subtitulo')
for k, num in ipairs(subtitulonumero) do
anadirfila({
datos = args['subtitulo' .. num],
estilodatos = args['estilosubtitulo' .. num] or args.estilosubtitulo,
clase = args.clasesubtitulo,
clasefila = args['clasesubtitulo' .. num]
})
end
end
local function hacerfilassuperiores()-- fileres enriba d'imáxenes llaterales
if args.datosup then
args.datosup1 = args.datosup
end
if args.clasedatosup then
args.clasedatosup1 = args.clasedatosup
end
if args.estilodatosup then
args.estilodatosup1 = args.estilodatosup
end
local datosupnumero = getArgNums('datosup')
for k, num in ipairs(datosupnumero) do
anadirfila({
datos = args['datosup' .. num],
estilodatos = args['estilodatosup' .. num],
clase = args.clasedatosup,
clasefila = args['clasedatosup' .. num]
})
end
end
local function hacerImageneslaterales()
-- Imáxenes qu'aparecerán arriba de forma xeminada por exemplu escudos y banderes
if args['tamañoimagenizquierda'] == "" or args['tamañoimagenizquierda'] == nil then
args['tamañoimagenizquierda'] = '100px'
end
if args['tamañoimagenderecha'] == "" or args['tamañoimagenderecha'] == nil then
args['tamañoimagenderecha'] = '100px'
end
if args.imagenderecha and args.imagenizquierda then
root
.tag('tr')
.tag('td')
--.attr('cellspacing', '0em')
--.attr('padding','0em')
.attr('colspan', '3')
.css('align', 'center')
.tag('table') -- tien que dir dientro d'una tabla pa que les fileres nun lu deformen
.css('width', '100%')
.addClass('mergedrow')
.tag('tr')
.tag('td')
.css('text-align', 'center')
.css('background-color', 'transparent')
.addClass(args.claseimagenizquierda)
.css('align', 'center')-- Allíniase nel centru horizontal
.css('text-align', 'center') -- Allíniase nel centru horizontal
.css('vertical-align', 'middle')-- Allíniase nel centru vertical
.cssText(args.estiloimagenizquierda)
.wikitext('[[Archivu:' .. args.imagenizquierda .. '|' .. args['tamañoimagenizquierda'] .. ']]' )
.tag('br')
.tag('span')
.cssText(args.estilopieizquierdo)
.wikitext(args.pieizquierdo)
.tag('td')
.css('text-align', 'center')-- Allíniase nel centru horizontal
.css('align', 'center')-- Allíniase nel centru horizontal
.css('vertical-align', 'middle')-- Allíniase nel centru vertical
.css('background-color', 'transparent')
.addClass(args.claseimagenderecha)
.cssText(args.estiloimagenderecha)
.wikitext('[[Archivu:' .. args.imagenderecha .. '|' .. args['tamañoimagenderecha'] .. ']]' )
.tag('br')
.tag('span')
.cssText(args.estilopiederecho)
.wikitext(args.piederecho)
.newline()
elseif args.imagenderecha or args.imagenizquierda then
-- Si solo una de les dos, la imaxe qu'apareza tará nel centru
imagenL = {}
if args.imagenderecha ~= '' and args.imagenderecha ~= nil then
imagenL = 'imagenderecha'
elseif args.imagenizquierda ~= '' and args.imagenizquierda ~= nil then
imagenL = 'imagenizquierda'
end
pieL = {}
if args.imagenderecha then
pieL = 'piederecho'
elseif args.imagenizquierda then
pieL = 'pieizquierdo'
end
root
.tag('tr')
.tag('td')
.attr('colspan', '3')
.addClass(args['clase' .. imagenL])
.css('text-align', 'center')
.cssText(args['estilo' .. imagenL])
.newline()
.wikitext('[[Archivu:' .. args[imagenL] .. '|'.. args['tamaño'..imagenL] .. ']]' )
.tag('br')
.tag('span')
.cssText(args['estilo' .. pieL])
.wikitext(args[pieL])
end
end
local function hacerImagenes() -- Pue crear un númberu infinitu d'imáxenes
if args.imagen then
args.imagen1 = args.imagen
end
if args['tamañoimagen'] then
args['tamañoimagen1'] = args['tamañoimagen']
end
if args.pie then
args.pie1 = args.pie
end
local imagenums = getArgNums('imagen')
for k, num in ipairs(imagenums) do
local pie = args['pie' .. num]
local flotante = args['imagenflotante' .. num] or false
if args['tamañoimagen'..num] == nil then
args['tamañoimagen'..num] = anchoImagen
end
imagen = {}
local cadenaBusqueda = mw.ustring.gsub(args['imagen'..num],'UNIQ','[') -- Pa que nun dea problemes con delles plantíes
if mw.ustring.find(cadenaBusqueda, '[{[|]') == nil then -- Comprueba si hiy [ o { pa nun amestar prefixu
imagen = ('[[Archivu:' .. args['imagen' .. num] .. '|'.. args['tamañoimagen' ..num] .. ']]' )
else
imagen = args['imagen'..num]
end
local datos = HtmlBuilder.create().wikitext(imagen)
if pie and not flotante then
datos
.tag('br', {selfClosing = true})
.done()
end
if pie then
datos
.tag('span')
.cssText(args.estilopie)
.wikitext(pie)
end
anadirfila({
datos = tostring(datos),
estilodatos = args.estiloimagen,
clase = args.claseimagen,
clasefila = args['claseimagen' .. num]
})
end
end
local function hacerFilas()
local filanum = union(getArgNums('seccion'), getArgNums('datos'))
table.sort(filanum)
for k, num in ipairs(filanum) do
anadirfila({
estilosubtitulo = depurarVacias(args['estilosubtitulo' .. num]),
seccion = depurarVacias(args['seccion' .. num]),
estiloseccion = depurarVacias(args['estilosección' .. num]),
etiqueta = depurarVacias(args['etiqueta' .. num]),
datos = depurarVacias(args['datos' .. num]),
estiloetiqueta = depurarVacias(args['estiloetiqueta' .. num]),
estilodatos = depurarVacias(args['estilodatos' .. num]),
clase = depurarVacias(args['clase' .. num]),
clasefila = depurarVacias(args['clasefila' .. num])
})
end
end
function tieneDatosFila(fila)
-- Función que devuelve true si la filera o grupu de fileres (nel casu de
-- seiciones) tien datos.
if fila.tipo == 'sección' or fila.tipo == 'seccion' then
for k, filaSeccion in ipairs(fila) do
if tieneDatosFila(filaSeccion) then
return true
end
end
elseif fila.tipo == 'sucesión' or fila.tipo == 'sucesion' then
if depurarVacias(fila[1]) or depurarVacias(fila['anterior']) or
depurarVacias(fila[3]) or depurarVacias(fila['siguiente']) then
return true
end
else
if depurarVacias(fila[2]) or depurarVacias(fila['datos']) then
return true
end
end
return false
end
function anadirSucesion(argumentosSucesion)
local fila = root.tag('tr')
fila.css('font-size', '88%')
fila.css('text-align', 'center')
local celda
local width
width = '33%'
celda = fila.tag('td')
celda
.css('width', width)
.css('padding', '0.2em 0.1em 0.2em 0')
.css('vertical-align', 'middle')
if argumentosSucesion['estilo fuente'] then
celda
.tag('span')
.css('font-style', argumentosSucesion['estilo fuente'])
.wikitext(argumentosSucesion.anterior)
else
celda.wikitext(argumentosSucesion.anterior)
end
if argumentosSucesion['añu anterior'] then
celda
.tag('br')
.wikitext('(' .. argumentosSucesion['añu anterior'] .. ')')
end
celda = fila.tag('td')
celda
.css('width', width)
.css('padding', '0.2em 0.1em')
.css('vertical-align', 'middle')
.css('background-color', argumentosSucesion.color or '#E6E8FA')
celda
.tag('span')
.css('font-weight', 'bold')
.css('font-style', argumentosSucesion['estilo fuente'] or '')
.wikitext(argumentosSucesion.actual or args.titulo)
if argumentosSucesion['añu'] then
celda
.tag('br')
.wikitext('(' .. argumentosSucesion['añu'] .. ')')
end
celda = fila.tag('td')
celda
.css('width', width)
.css('padding', '0.2em 0 0.2em 0.1em')
.css('vertical-align', 'middle')
if argumentosSucesion['estilo fuente'] then
celda
.tag('span')
.css('font-style', argumentosSucesion['estilo fuente'])
.wikitext(argumentosSucesion.siguiente)
else
celda.wikitext(argumentosSucesion.siguiente)
end
if argumentosSucesion['añu siguiente'] then
celda
.tag('br')
.wikitext('(' .. argumentosSucesion['añu siguiente'] .. ')')
end
end
function hacerFilasTabla(tabla)
-- Función que compón les fileres d'una tabla bien la ficha o bien una seición de la mesma.
local anadidoTituloSeccion = false
for k, fila in ipairs(tabla) do
if tieneDatosFila(fila) then
if fila.tipo == 'sección' or fila.tipo == 'seccion' then
-- Amestar el títulu de la seición (si ta informáu)
local tituloSeccion = depurarVacias(fila.titulo) or depurarVacias(fila['título'])
if tituloSeccion then
anadirfila({
estiloseccion = fila['estilotitulo'] or fila['estilotítulo'],
seccion = tituloSeccion
})
end
hacerFilasTabla(fila)
elseif fila.tipo == 'sección desplegable' or fila.tipo == 'seccion desplegable' then -- FALTA
elseif fila.tipo == 'sucesión'or fila.tipo == 'sucesion' then
anadirSucesion({
['anterior'] = depurarVacias(fila[1]) or depurarVacias(fila['anterior']),
['actual'] = depurarVacias(fila['actual']),
['siguiente'] = depurarVacias(fila[3]) or depurarVacias(fila['siguiente']),
['añu anterior'] = depurarVacias(fila['añu anterior']),
['añu'] = depurarVacias(fila['añu']),
['añu siguiente'] = depurarVacias(fila['añu siguiente']),
['estilo fuente'] = depurarVacias(fila['estilo fuente']),
['color'] = depurarVacias(fila['color'])
})
elseif fila.tipo == 'dos columnas' then -- FALTA
elseif fila.tipo == 'tres columnas' then -- FALTA
else -- Etiqueta + Datos o solo Datos
anadirfila({
etiqueta = depurarVacias(fila[1]) or depurarVacias(fila['etiqueta']),
datos = depurarVacias(fila[2]) or depurarVacias(fila['datos']),
estiloetiqueta = fila['estiloetiqueta'] or tabla['estiloetiqueta'],
estilodatos = fila['estilodatos'] or tabla['estilodatos'],
clase = fila['clase'] or tabla['clase'],
clasefila = fila['clasefila'] or tabla['clasefila']
})
end
end
end
end
local function hacerBarraDeNavegacion()-- Crea na parte inferior un enllaz a la plantía que se dea con nome
if not args.nombre then return end
root
.tag('tr')
.tag('td')
.attr('colspan', '3')
.css('text-align', 'right')
.wikitext(mw.getCurrentFrame():expandTemplate({
title = 'navbar',
args = { args.nombre, mini = 1 }
}))
end
local function hacerBarraWikidata()-- Crea na parte inferior un enllaz al ítem de Wikidata
local wikibase = require('Módulu:Wikibase')
local enlacePagina = mw.title.getCurrentTitle().text
local etiquetaPagina = mw.ustring.gsub(enlacePagina,'%s%(.*%)','')
local entidad = args.entidad or wikibase.id()
local textoPie = "editar datos en Wikidata"
if (args.child == 'si' or args.integrada == 'sí' or args.wikidata == 'no') or (mw.title.getCurrentTitle().namespace ~= 0 and mw.title.getCurrentTitle().namespace ~= 104 and not args.entidad) then
textoPie = ''
elseif entidad ~= "" and entidad ~= nil then
textoPie = '<small>[<span class= plainlinks>[[d:' .. tostring(entidad) .. '|editar datos en Wikidata]]</span>]</small>'
if args.entidad and (mw.title.getCurrentTitle().namespace == 0 or mw.title.getCurrentTitle().namespace == 104) then
textoPie = textoPie .. '[[Categoría:Wikipedia:Artículos con fiches qu\'usen accesu arbitrariu]]'
end
else
textoPie = "<small><center>'''Páxina non enllazada a [[Wikidata]]'''\n"..
"* Si nun esiste n'otres Wikipedies: [<span class=plainlinks>[//www.wikidata.org/w/index.php?title=Special:NewItem&site=astwiki&page="..mw.uri.encode(enlacePagina,WIKI) .."&label="..mw.uri.encode(etiquetaPagina,WIKI) .." crea nuevo ítem]]</span>\n"..
"* Si esiste n'otres Wikipedies: [<span class=plainlinks>[[:d:Special:ItemByTitle|busca ítem pa enllazar]]</span>]\n"..
"y amiesta l'enllaz n'asturianu: ".. enlacePagina ..".</center></small>"
end
if textoPie ~= '' then
root
.tag('tr')
.tag('td')
.attr('colspan', '3')
.css('text-align', 'left')
.wikitext(textoPie)
end
end
local function hacerCategoriasSeguimiento()
if args.decat ~= 'si' and #(getArgNums('datos')) == 0 and not args[1] and mw.title.getCurrentTitle().namespace == 0 then
root.wikitext('[[Categoría:Wikipedia:Artículos qu\'usen ficha ensin datos en fileres]]')
end
if CategorizacionAByAD.hasAnyBadge() == '1' then
root.wikitext(CategorizacionAByAD.badgesCategories())
end
end
function _infobox()
if args.child ~= 'si' and args.integrada ~= 'sí' then
root = HtmlBuilder.create('table')
root -- Estilu de tola ficha
.addClass('infobox')
.addClass(args.clase)
.cssText('width:22.7em; line-height: 1.4em; text-align:left; padding:.23em') -- Lo mesmo que la plantía:Ficha
.cssText(args.estilo)
if args.estilo and (mw.title.getCurrentTitle().namespace == 10) then -- Pa que solo lo amieste nel espaciu de nomes plantía
root.wikitext('[[Categoría:Wikipedia:Fiches col parámetru estilu]]')
end
hacerTitulo()
hacerFilaArriba()
else
root = HtmlBuilder.create()
if args.titulo then
root.wikitext("'''" .. args.titulo .. "'''")
end
end
hacerSubtitulos()
hacerImagenSuperior()
hacerImageneslaterales()
hacerfilassuperiores()
hacerImagenes()
if not args[1] then
hacerFilas()
else
hacerFilasTabla(args)
end
hacerImagenInferior()
hacerPieDeTabla()
hacerBarraDeNavegacion()
hacerBarraWikidata()
hacerCategoriasSeguimiento()
return tostring(root)
end
local function touchParameters(prefixTable, origArgs, step)
-- Analiza los parámetros colos prefixos daos, n'orde por lotes y col tamañu especificáu a step.
-- Esto ye para evitar referencies etc apaeza nel orde enquivocáu.
if type(prefixTable) ~= 'table' or type(origArgs) ~= 'table' then
error("Entrada non válida detectada pa la función touchParameters. Dambos parámetros han ser tables.", 2)
end
if step and type(step) ~= 'number' then
error("Detectáu valor non numbéricu en step.", 2)
end
step = step or 20 -- Si nun se-y da'l tamañu a step, el valor predetermináu ye 20.
local temp
local a = 1 -- variable de contador.
local moreArgumentsExist = true
for j,v in ipairs(prefixTable) do
if not type(v) == "string" then
error("Detectáu un valor que nun ye string nel prefixu de la tabla pola función touchParameters.", 2)
end
temp = origArgs[v]
end
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
temp = origArgs[v .. tostring(i)]
if temp then
moreArgumentsExist = true
end
end
end
a = a + step
end
end
function p.infobox(frame)
local origArgs
marco = frame
-- Si se llama al través de #invoke, utiliza los argumentos pasaos a la plantía d'invocación.
-- De lo contrario, pa fines de prueba, asume args que se pasen directamente como parámetros.
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
-- Analizar los parámetros de datos nel mesmu orde que la plantía {{ficha}} lo fai, polo que
-- referencies etc. amosaránse nos llugares previstos.
local temp
temp = origArgs.titulo
temp = origArgs.arriba
touchParameters({'subtitulo'}, origArgs, 5)
touchParameters({'imagen', 'pie'}, origArgs, 5)
touchParameters({'seccion', 'etiqueta', 'datos'}, origArgs, 20)
temp = origArgs.piedetabla
-- L'analizador de funciones considera qu'una cadena vacía ye falsa, polo que para caltener el comportamientu
-- anterior de {{Ficha}}, debe camudar los argumentos vacíos a cero, polo que LUA considerarálos
-- que tamién son falsos (sacante parámetros 'title cursiva', qu'especifica un comportamientu diferente
-- según tea ausente o vacíu)
args = {}
for k, v in pairs(origArgs) do
if v ~= '' then
args[k] = v
end
end
return _infobox()
end
return p