Diferencia entre revisiones de «Módulo:Ficha de edificio»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
++
Optimizando y mejorando funciones obtenerMaterial(), obtenerCalle(), obtenerAlturas() y obtenerSuperficie(), que ahora devuelven múltiples valores cuando procede y realizan el formateo y la conversión de unidades
Línea 1: Línea 1:
local z = {}
local z = {}


local argumentos
local argumento={}
local argumento={}
local Entidad
local Entidad
local ModuloFicha = require('Módulo:Ficha')
local ModuloFicha = require('Módulo:Ficha')
local ModuloWikidata = require('Módulo:Wikidata')
local ModuloFormato = require('Módulo:Formato texto')
local ModuloPaginas = require('Módulo:Páginas')
local elementoTabla = require('Módulo:Tablas').elemento
local sinBandera = require('Módulo:Bandera').sinBandera
-- sin uso ?
local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local formatoURL = ModuloWikidataFormatos.formatoURL
local formatoURL = ModuloWikidataFormatos.formatoURL
local sinEnlazar = {['enlace']='no', ['linkback']='sí'}
local sinEnlazar = {['enlace']='no', ['linkback']='sí'}
local sinLapiz = {}
local sinLapiz = {}
local ModuloWikidata = require('Módulo:Wikidata')
local ModuloFormato = require('Módulo:Formato texto')
local ModuloPaginas = require('Módulo:Páginas')
local elementoTabla = require('Módulo:Tablas').elemento
local getPropiedadWikidata = ModuloWikidata.getPropiedad
local sinBandera = require('Módulo:Bandera').sinBandera
local color = '#CDCDCD'

function obtenerColor()
local colores = {
['hotel'] = '#264796',
['edificio militar'] = '#665D1D',
['cuartel'] = '#665D1D',
['bar'] = '#BFFF00',
['restaurante'] = '#BFFF00',
['iglesia'] = '#B695C0',
['hospital'] = '#CB1D11',
}
local tipoedificio = elementoTabla(Entidad,'claims','P31',1,'mainsnak','datavalue')
tipoedificio = elementoTabla(tipoedificio,'value','id')
local nombretipoedificio= mw.wikibase.getEntityObject(tipoedificio)
nombretipoedificio = elementoTabla(nombretipoedificio,'labels','es','value')
local uso = argumento['tipo'] or argumento ['Tipo'] or argumento['uso'] or argumento['Uso'] or argumento ['usos'] or argumento['Usos'] or propiedad('P366')
if uso == "militar" or uso == "Militar" then
return colores['edificio militar']
end
return colores[nombretipoedificio] or '#CDCDCD'
end

function obtenerSuperficie()
local superficie = elementoTabla(Entidad,'claims','P2046',1)
if superficie == nil then
return
end
local valoraltura = elementoTabla(superficie,'mainsnak','datavalue','value','amount')
local unidadaltura = elementoTabla(superficie,'mainsnak','datavalue','value','unit')
if unidadaltura == "https://www.wikidata.org/entity/Q857027" or "Q857027" then
valoraltura = (valoraltura * 929.0304)/10^4
end
return valoraltura .." [[metro cuadrado|m²]]"
end


function z.prueba(frame)
function z.prueba(frame)
Línea 57: Línea 21:
function z.Ficha(frame)
function z.Ficha(frame)
ModuloWikidata:setFrame(frame)
ModuloWikidata:setFrame(frame)
argumento = obtenerArgumentosConValor(frame)
argumento = obtenerArgumentosConValor(frame)
if argumento['wikidata'] == 'no' and (argumento['fecha de inauguración']
if argumento['wikidata'] == 'no' and (argumento['fecha de inauguración']
or argumento['fecha de demolición']
or argumento['fecha de demolición']
) then
) then
obtenerDatosWikidata = false
obtenerDatosWikidata = false
Entidad = nil
Entidad = nil
else
else
obtenerDatosWikidata = true
obtenerDatosWikidata = true
-- Obtener los datos de la página donde se inserta la ficha de Wikidata.
-- Obtener los datos de la página donde se inserta la ficha de Wikidata.
Entidad = mw.wikibase.getEntityObject(argumento['id']) or {}
Entidad = mw.wikibase.getEntityObject(argumento['id']) or {}
end
end


local pais = argumento['pais'] or argumento['país'] or propiedad('P17')
local pais = argumento['pais'] or argumento['país'] or propiedad('P17')
local tipodivadministrativa = argumento['tipo_división_administrativa']
local tipodivadministrativa = argumento['tipo_división_administrativa']
local divadministrativa = argumento['división_administrativa']
local divadministrativa = argumento['división_administrativa']
local imagen = argumento['imagen'] or argumento['Imagen'] or argumento['foto']
local imagen = argumento['imagen'] or argumento['Imagen'] or argumento['foto']
local pieDeImagen
local pieDeImagen


if imagen then
if imagen then
pieDeImagen = argumento['pie de imagen'] or argumento['pieimagen'] or
pieDeImagen = argumento['pie de imagen'] or argumento['pieimagen'] or
argumento['descripción'] or argumento['descripcion'] or
argumento['descripción'] or argumento['descripcion'] or
argumento['pie de foto'] or argumento['piedefoto'] or
argumento['pie de foto'] or argumento['piedefoto'] or
argumento['textoimagen'] or argumento['TextoImagen'] or argumento['texto_imagen'] or
argumento['textoimagen'] or argumento['TextoImagen'] or
argumento['texto_imagen'] or argumento['pie de foto']
else
argumento['pie de foto']
imagen, pieDeImagen = obtenerImagenWikidata()
else
end
imagen, pieDeImagen = obtenerImagenWikidata()
nombre = argumento['nombre'] or argumento['Nombre'] or
obtenerEtiquetaWikidata() or
end
ModuloPaginas.nombrePagina({desambiguar='sí'})
nombre = argumento['nombre'] or argumento['Nombre'] or
nombrelocal = argumento['nombre local'] or argumento['Nombre local']
obtenerEtiquetaWikidata() or
if nombre and nombrelocal and nombre ~= nombrelocal then
ModuloPaginas.nombrePagina({desambiguar='sí'})
titulo = nombre .. '<br /><span style="font-size:smaller">' .. nombrelocal .. '</span>'
nombrelocal = argumento['nombre local'] or argumento['Nombre local']
else
if nombre and nombrelocal and nombre ~= nombrelocal then
titulo = nombre
titulo = nombre .. '<br /><span style="font-size:smaller">' .. nombrelocal .. '</span>'
end
else
local color = obtenerColor()
titulo = nombre
local estilotitulo = 'background-color:'..color.. '; font-style:normal'
end
local estiloseccion = 'background-color:'..color
local color = obtenerColor()
local evsigs = devolverelemensigs(Entidad)
local estilotitulo = 'background-color:'..color.. '; font-style:normal'
if evsigs ~= nil then
local estiloseccion = 'background-color:'..color
local codigopostal = propiedad('P281') or argumento['código postal']
local fechainicio = argumento['inicio'] or argumento['Inicio'] or (evsigs['Q385378'] and evsigs['Q385378']['fechainicio']) or ''
local fechafin = argumento['fin'] or argumento['Fin'] or (evsigs['Q385378'] and evsigs['Q385378']['fechainicio']) or ''
local calle = obtenerCalle()
local primerapiedra = argumento['fecha primera piedra'] or argumento['Fecha primera piedra'] or evsigs['Q106863'] or ''
local direccionpostal
else
local evsigs = devolverelemensigs(Entidad)
local fechainicio = argumento['inicio'] or argumento['Inicio']
if evsigs ~= nil then
local fechainicio = argumento['inicio'] or argumento['Inicio'] or evsigs['Q385378']['fechainicio']
local fechafin = argumento['fin'] or argumento['Fin'] or argumento['término']
local fechafin = argumento['fin'] or argumento['Fin'] or evsigs['Q385378']['fechainicio']
local primerapiedra = argumento['fecha primera piedra'] or argumento['Fecha primera piedra']
end
local primerapiedra = argumento['fecha primera piedra'] or argumento['Fecha primera piedra'] or evsigs[Q106863]
local direccionpostal = argumento['dirección'] or argumento['dirección postal'] or propiedad('P6375') or obtenerCalle()
else
local fechainicio = argumento['inicio'] or argumento['Inicio']
local codigopostal = argumento['código postal'] or propiedad('P281')
if codigopostal then
local fechafin = argumento['fin'] or argumento['Fin']
direccionpostal = ModuloFormato.separadosPorComa({direccionpostal, codigopostal})
local primerapiedra = argumento['fecha primera piedra'] or argumento['Fecha primera piedra']
end
end
local logotipo = argumento['logotipo'] or argumento['Logotipo'] or argumento['logo'] or argumento['Logotipo'] or propiedad('P154')
if codigopostal then
if logotipo ~= nil then
direccionpostal = ModuloFormato.separadosPorComa({propiedad('P6375') or calle, codigopostal})
logotipo = '[[Archivo:'..logotipo..']]'
else
end
direccionpostal = propiedad('P6375') or calle or argumento['dirección'] or argumento['dirección postal']
local Ficha =
end
{
local logotipo = argumento['logotipo'] or argumento['Logotipo'] or argumento['logo'] or argumento['Logotipo'] or propiedad('P154')
['titulo'] = titulo,
if logotipo ~= nil then
imagen = imagen,
logotipo = '[[Archivo:'..logotipo..']]'
['tamañoimagen'] = argumento['tamaño de imagen'] or argumento['tamaño'] or
end
argumento['tamaño imagen'] or argumento['tamañoimagen'] or
local Ficha = {
argumento['tamañodelaimagen'] or argumento['tamaño de foto'] or
['titulo'] = titulo,
'220px',
imagen = imagen,
pie = pieDeImagen,
['tamañoimagen'] = argumento['tamaño de imagen'] or argumento['tamaño'] or
tipocabecera = 'edificio',
argumento['tamaño imagen'] or argumento['tamañoimagen'] or argumento['tamañodelaimagen'] or
estilotitulo = estilotitulo,
argumento['tamaño de foto'] or
estiloseccion = estiloseccion,
'220px',
estiloetiqueta = 'width:33%;',
pie = pieDeImagen,
{'',logotipo},
tipocabecera = 'edificio',
{tipo = "sección",
estilotitulo = estilotitulo,
['titulo'] = "Localización",
estiloseccion = estiloseccion,
{'País', sinBandera( pais )},
estiloetiqueta = 'width:33%;',
{tipodivadministrativa, sinBandera( divadministrativa )},
{'',logotipo},
{'Coordenadas' , argumento['coor'] or argumento['coordenadas'] or propiedad('P625', {formato='dms', display='inline,title', tipo='edu', uno='sí'})},
{tipo = "sección",
{'Localización', sinBandera( argumento['localización'] or
['titulo'] = "Localización",
ModuloFormato.enVariasLineas({ModuloFormato.separadosPorComa({argumento['ciudad'], argumento['estado'], argumento['país']})}) or
{'País', pais},
ModuloFormato.enVariasLineas({propiedad('P969'), ModuloFormato.separadosPorComa({propiedad('P131'),propiedad('P17')})}) )},
{tipodivadministrativa, divadministrativa},
{'Dirección postal', sinBandera( direccionpostal )},
--{'Coordenadas' , argumento['coor'] or argumento['coordenadas'] or propiedad('P625', {formato='dms', display='inline,title', tipo='edu', uno='sí'})},
},
{'Coordenadas' , argumento['coor'] or argumento['coordenadas'] or propiedad('P625', {formato='dms', display='inline,title', tipo='edu', uno='sí'})},
{tipo = "sección",
{'Localización',argumento['localización'] or
['titulo'] = "Información general",
ModuloFormato.enVariasLineas({ModuloFormato.separadosPorComa({argumento['ciudad'], argumento['estado'], argumento['país']})}) or
{'Nombres anteriores', argumento['nombres anteriores'] or argumento['Nombres anteriores']},
ModuloFormato.enVariasLineas({propiedad('P969'), ModuloFormato.separadosPorComa({propiedad('P131'),propiedad('P17')})}) },
{'Otros nombres',argumento['otros nombres'] or argumento['Otros nombres'] or propiedad('P4970')},
{'Dirección postal', direccionpostal},
{'Organización', argumento['organización'] or argumento['Organización'] or propiedad('P749')},
{'Propietario', argumento['dueño'] or argumento['Dueño'] or propiedad('P127')},
},
{'Estado', argumento['estado'] or argumento['Estado']},
{tipo = "sección",
{'Catalogación', argumento['catalogación'] or argumento['Catalogación']},
['titulo'] = "Información general",
{'Nombres anteriores', argumento['nombres anteriores'] or argumento['Nombres anteriores']},
{'Se conecta con', argumento['se conecta con'] or argumento['Se conecta con']},
{'Otros nombres',argumento['otros nombres'] or argumento['Otros nombres'] or propiedad('P4970')},
{'Cruza',argumento['cruza'] or argumento['Cruza']},
{'Organización', argumento['organización'] or argumento['Organización'] or propiedad('P749')},
{'Número de vanos', argumento['ojos'] or argumento['Ojos']},
{'Propietario', argumento['dueño'] or argumento['Dueño'] or propiedad('P127')},
{'Ocupante', argumento['ocupante'] or argumento['Ocupante']},
{'Estado', argumento['estado'] or argumento['Estado']},
{'Usos', argumento['uso'] or argumento['Uso'] or propiedad('P366')},
{'Inicio de obra', fechainicio},
{'Catalogación', argumento['catalogación'] or argumento['Catalogación']},
{'Se conecta con', argumento['se conecta con'] or argumento['Se conecta con']},
{'[[Coronación]]', argumento['coronación'] or argumento['Coronación']},
{'Finalización de obra', fechafin},
{'Cruza',argumento['cruza'] or argumento['Cruza']},
{'Número de vanos', argumento['ojos'] or argumento['Ojos']},
{'Fundación', argumento['fundación'] or argumento['Fundación'] or propiedad('P571')},
{'Ocupante', argumento['ocupante'] or argumento['Ocupante']},
{'Clausura', argumento['clausura'] or argumento['Clausura'] or propiedad('P3999')},
{'Usos', argumento['uso'] or argumento['Uso'] or propiedad('P366')},
{'Número de camas', argumento['camas'] or argumento['Camas'] or propiedad('P6801')},
{'Número de télefono', argumento['telefono'] or argumento['Telefono'] or propiedad('P1329')},
{'Inicio de obra', fechainicio},
{'[[Coronación]]', argumento['coronación'] or argumento['Coronación']},
{'Emergencias', argumento['emergencias'] or argumento['Emergencias']},
{'Afiliación', argumento['afiliación'] or argumento['Afiliación'] or propiedad('P1416')},
{'Finalización de obra', fechafin},
{'Fundación', argumento['fundación'] or argumento['Fundación'] or propiedad('P571')},
{'Red', argumento['red'] or argumento['Red']},
{'Clausura', argumento['clausura'] or argumento['Clausura'] or propiedad('P3999')},
{'Clasificación', argumento['clasificación'] or argumento['Clasificación']},
{'Número de camas', argumento['camas'] or argumento['Camas'] or propiedad('P6801')},
{'Especialidad', argumento['especialidad'] or argumento['Especialidad']},
{'Número de télefono', argumento['telefono'] or argumento['Telefono'] or propiedad('P1329')},
{'Financiamiento', argumento['financiamiento'] or argumento['Financiamiento']},
{'Emergencias', argumento['emergencias'] or argumento['Emergencias']},
{'Estilo', argumento['estilo'] or argumento['Estilo'] or propiedad('P149')},
{'Afiliación', argumento['afiliación'] or argumento['Afiliación'] or propiedad('P1416')},
{'Arrendatario actual', argumento['arrendatarios'] or argumento['Arrendatarios']},
{'Red', argumento['red'] or argumento['Red']},
{'Nombrado en honor a', argumento['nombrado en honor a'] or argumento['Nombrado en honor a'] or propiedad('P138')},
{'Primera piedra', primerapiedra },
{'Clasificación', argumento['clasificación'] or argumento['Clasificación']},
{'Especialidad', argumento['especialidad'] or argumento['Especialidad']},
{'Antena', argumento['antena'] or argumento['Antena']},
{'Financiamiento', argumento['financiamiento'] or argumento['Financiamiento']},
{'Piso más alto', argumento['piso mas alto'] or argumento['Piso mas alto'] or propiedad('P1101')},
},
{'Estilo', argumento['estilo'] or argumento['Estilo'] or propiedad('P149')},
{tipo = "sección",
{'Arrendatario actual', argumento['arrendatarios'] or argumento['Arrendatarios']},
['titulo'] = "Altura",
{'Nombrado en honor a', argumento['nombrado en honor a'] or argumento['Nombrado en honor a'] or propiedad('P138')},
{'Altura arquitectónica', argumento['altura arquitectonica'] or argumento['Altura arquitectonica'] or argumento['altura'] or argumento['Altura'] or obtenerAlturas().altura},
{'Primera piedra', primerapiedra },
{'Antena', argumento['antena'] or argumento['Antena']},
{'Altura máxima', argumento['altura maxima'] or argumento['Altura maxima'] or obtenerAlturas().maxima},
},
{'Piso más alto', argumento['piso mas alto'] or argumento['Piso mas alto'] or propiedad('P1101')},
{tipo="sección",
},
['título']="Record de altura",
{tipo = "sección",
{argumento['record de altura'] or argumento['Record de altura']},
['titulo'] = "Altura",
{'Predecesor', argumento['precedecesor'] or argumento['Predecesor']},
{'Altura arquitectónica', argumento['altura arquitectonica'] or argumento['Altura arquitectonica'] or argumento['altura'] or argumento['Altura'] or devolveraltura(Entidad).altura},
},
{'Altura máxima', argumento['altura maxima'] or argumento['Altura maxima'] or devolveraltura(Entidad).alturamaxima},
{tipo = "sección",
},
['titulo'] = "Detalles técnicos",
{tipo="sección",
{'Material', argumento['material'] or argumento['Material'] or obtenerMaterial()},
['título']="Record de altura",
{argumento['record de altura'] or argumento['Record de altura']},
{'Superficie', argumento['superficie'] or argumento['Superficie'] or obtenerSuperficie()},
{'Predecesor', argumento['precedecesor'] or argumento['Predecesor']},
{'Número de plantas', argumento['numero de plantas'] or argumento['Numero de plantas'] or propiedad('P1101')},
{'Número de ascensores', argumento['numero de ascensores'] or argumento['Numero de ascensores'] or propiedad('P1301')},
},
{tipo = "sección",
},
{tipo = "sección",
['titulo'] = "Detalles técnicos",
['titulo'] = 'Diseño y construcción',
{'Material', argumento['material'] or argumento['Material'] or obtenerMaterial()},
{'Arquitecto', argumento['arquitecto'] or argumento['Arquitecto'] or propiedad('P84')},
{'Superficie', argumento['superficie'] or argumento['Superficie'] or obtenerSuperficie()},
{'Ingeniero', argumento['ingeniero estructural'] or argumento['Ingeniero de servicios']},
{'Número de plantas', argumento['numero de plantas'] or argumento['Numero de plantas'] or propiedad('P1101')},
{'Ingeniero de servicios', argumento['ingeniero de servicios'] or argumento['Ingeniero de servicios']},
{'Número de ascensores', argumento['numero de ascensores'] or argumento['Numero de ascensores'] or propiedad('P1301')},
{'Ingeniero civil', argumento['ingeniero civil'] or argumento['Ingeniero civil']},
{'Otros', argumento['otros'] or argumento['Otros']},
},
{'Ingeniero estructural', argumento['ingeniero estructural'] or argumento['Ingeniero estructural'] or propiedad('P631')},
{tipo = "sección",
{'Autor', argumento['autor'] or argumento['Autor']},
['titulo'] = 'Diseño y construcción',
{'Arquitecto', argumento['arquitecto'] or argumento['Arquitecto'] or propiedad('P84')},
{'Contratista', argumento['contratista'] or argumento['Contratista']},
{'Ingeniero', argumento['ingeniero estructural'] or argumento['Ingeniero de servicios']},
{'Viviendas', argumento['viviendas'] or argumento['Viviendas']},
{'Ingeniero de servicios', argumento['ingeniero de servicios'] or argumento['Ingeniero de servicios']},
{'Conocido por', argumento['conocido por'] or argumento['Conocido por']},
},
{'Ingeniero civil', argumento['ingeniero civil'] or argumento['Ingeniero civil']},
{tipo = "sección",
{'Otros', argumento['otros'] or argumento['Otros']},
['titulo'] = "Remodelación",
{'Ingeniero estructural', argumento['ingeniero estructural'] or argumento['Ingeniero estructural'] or propiedad('P631')},
{'Autor', argumento['autor'] or argumento['Autor']},
{'Ingeniero civil', argumento['rem ingeniero civil'] or argumento['Rem ingeniero civil']},
{'Contratista', argumento['contratista'] or argumento['Contratista']},
{'Otros', argumento['rem otros'] or argumento['Rem otros']},
{'Viviendas', argumento['viviendas'] or argumento['Viviendas']},
{'Ingeniero estructural', argumento['rem ingeniero estructural'] or argumento['Rem ingeniero estructural']},
{'Conocido por', argumento['conocido por'] or argumento['Conocido por']},
{'Contratista', argumento['contratista'] or argumento['Contratista']},
{'Premios', argumento['rem premios'] or argumento['rem premios']},
},
{tipo = "sección",
},
{tipo = "sección",
['titulo'] = "Remodelación",
["titulo"] = "Otra información",
--Bar o restaurante
{'Ingeniero civil', argumento['rem ingeniero civil'] or argumento['Rem ingeniero civil']},
{'Otros', argumento['rem otros'] or argumento['Rem otros']},
{"N.º de asientos", argumento["nro de asientos"] or argumento["Nro de asientos"] or propiedad("P1083")},
{'Ingeniero estructural', argumento['rem ingeniero estructural'] or argumento['Rem ingeniero estructural']},
{"N.º de tiendas", argumento['nro de tiendas'] or argumento['Nro de tiendas'] },
--Hotel
{'Contratista', argumento['contratista'] or argumento['Contratista']},
{'Premios', argumento['rem premios'] or argumento['rem premios']},
{"N.º de habitaciones", argumento["nro de habitaciones"] or argumento["Nro de habitaciones"]},
{"N.º de suites", argumento["nro de suites"] or argumento["Nro de suites"]},
},
{"N.º de restaurantes", argumento["nro de restaurantes"] or argumento["Nro de restaurantes"]},
{tipo = "sección",
{"N.º de bares", argumento["nro de bares"] or argumento["Nro de bares"]},
["titulo"] = "Otra información",
{"Estrellas", argumento["estrellas"] or argumento["Estrellas"]},
--Bar o restaurante
--Edificios religiosos
{"N.º de asientos", argumento["nro de asientos"] or argumento["Nro de asientos"] or propiedad("P1083")},
{"N.º de tiendas", argumento['nro de tiendas'] or argumento['Nro de tiendas'] or propiedad()},
{"Culto", argumento["culto"] or argumento["Culto"] or propiedad("P140")},
{"Diócesis", argumento["diocesis"] or argumento["Diocesis"] or propiedad("P708")},
--Hotel
{"N.º de habitaciones", argumento["nro de habitaciones"] or argumento["Nro de habitaciones"]},
{"Advocación", argumento["advocacion"] or argumento["Advocacion"] or propiedad("P825")},
--Edificios militares
{"N.º de suites", argumento["nro de suites"] or argumento["Nro de suites"]},
{"N.º de restaurantes", argumento["nro de restaurantes"] or argumento["Nro de restaurantes"]},
{"Controlador", argumento["controlado por"] or argumento["Controlado por"] },
{"N.º de bares", argumento["nro de bares"] or argumento["Nro de bares"]},
{"Guarnición", argumento["guarnición"] or argumento["Guarnición"]},
{"Estrellas", argumento["estrellas"] or argumento["Estrellas"]},
{"Comandante actual", argumento["comandante actual"] or argumento["Comandante actual"]},
{"Ocupantes", argumento["ocupantes"] or argumento["Ocupantes"] or propiedad("P466")},
--Edificios religiosos
{"Culto", argumento["culto"] or argumento["Culto"] or propiedad("P140")},
{"Batallas", argumento["batallas"] or argumento["Batallas"]},
{"Diócesis", argumento["diocesis"] or argumento["Diocesis"] or propiedad("P708")},
{"Eventos", argumento["eventos"] or argumento["Eventos"]},
{"Advocación", argumento["advocacion"] or argumento["Advocacion"] or propiedad("P825")},
{"Período", argumento["periodo"] or argumento["Periodo"]},
},
--Edificios militares
{tipo = "sección",
{"Controlador", argumento["controlado por"] or argumento["Controlado por"] },
['titulo'] = "Sitio web",
{"Guarnición", argumento["guarnición"] or argumento["Guarnición"]},
{"Comandante actual", argumento["comandante actual"] or argumento["Comandante actual"]},
{'Sitio web', argumento['sitio web'] or argumento['Sitio web'] or propiedad('P856')},
},
{"Ocupantes", argumento["ocupantes"] or argumento["Ocupantes"] or propiedad("P466")},
{tipo = "sección",
{"Batallas", argumento["batallas"] or argumento["Batallas"]},
['titulo'] = "Referencias",
{"Eventos", argumento["eventos"] or argumento["Eventos"]},
{"Período", argumento["periodo"] or argumento["Periodo"]},
{argumento["premios"] or argumento["Premios"] or propiedad("P166")},
{argumento['referencias'] or argumento['Referencias']},
},
}
{tipo = "sección",
['titulo'] = "Sitio web",
{'Sitio web', argumento['sitio web'] or argumento['Sitio web'] or propiedad('P856')},
},
{tipo = "sección",
['titulo'] = "Referencias",
{argumento["premios"] or argumento["Premios"] or propiedad("P166")},
{argumento['referencias'] or argumento['Referencias']},
}
}
}
return ModuloFicha.infobox(Ficha)
return ModuloFicha.infobox(Ficha)
end
end


function obtenerImagenWikidata()
function obtenerImagenWikidata()
local imagen, valorImagen, piesDeImagen, k, pieDeImagen
local imagen, valorImagen, piesDeImagen, k, pieDeImagen
if not Entidad then
if not Entidad then
return
return
end
end
local imagen = elementoTabla(Entidad, 'claims','P18',1)
local imagen = elementoTabla(Entidad, 'claims','P18',1)


if not imagen then
if not imagen then
return
return
end
end


-- Obtener el nombre de la imagen
-- Obtener el nombre de la imagen
valorImagen = elementoTabla(imagen, 'mainsnak','datavalue','value') -- Por ejemplo, imagen.jpg
valorImagen = elementoTabla(imagen, 'mainsnak','datavalue','value') -- Por ejemplo, imagen.jpg


-- Obtener los pies de la imagen, uno por idioma
-- Obtener los pies de la imagen, uno por idioma
piesDeImagen = elementoTabla(imagen, 'qualifiers','P2096')
piesDeImagen = elementoTabla(imagen, 'qualifiers','P2096')


-- Encontrar el pie en español (aquel con datavalue.value.language = "es")
-- Encontrar el pie en español (aquel con datavalue.value.language = "es")
if piesDeImagen then
if piesDeImagen then
for k,pieDeImagen in pairs(piesDeImagen) do
for k,pieDeImagen in pairs(piesDeImagen) do
if pieDeImagen.datavalue.value.language=='es' then
if pieDeImagen.datavalue.value.language=='es' then
-- devolver la imagen y el texto del pie de la imagen en español
-- devolver la imagen y el texto del pie de la imagen en español
return valorImagen, pieDeImagen.datavalue.value.text
return valorImagen, pieDeImagen.datavalue.value.text
end
end
end
end
end
end


-- Si no hay pie de imagen en español comprueba si hay fecha especificada para la imagen
-- Si no hay pie de imagen en español comprueba si hay fecha especificada para la imagen
piesDeImagen = elementoTabla(imagen, 'qualifiers', 'P585')
piesDeImagen = elementoTabla(imagen, 'qualifiers', 'P585')


if piesDeImagen and piesDeImagen[1] then
if piesDeImagen and piesDeImagen[1] then
return valorImagen, nombre .. ' en ' .. require('Módulo:Wikidata/Fecha').FormateaFechaHora(piesDeImagen[1].datavalue.value, {['formatoFecha']='año',['enlace']='no'})
return valorImagen, nombre .. ' en ' .. require('Módulo:Wikidata/Fecha').FormateaFechaHora(piesDeImagen[1].datavalue.value, {['formatoFecha']='año',['enlace']='no'})
end
end


-- Sin pie de imagen en español
-- Sin pie de imagen en español
return valorImagen
return valorImagen
end
end


function obtenerArgumentosConValor(frame)
function obtenerArgumentosConValor(frame)
local original
local original


if frame == mw.getCurrentFrame() then
if frame == mw.getCurrentFrame() then
original = frame:getParent().args
original = frame:getParent().args
else
else
original = frame.args or frame
original = frame.args or frame
end
end
local copia= {}
local copia= {}


for k,v in pairs(original) do
for k,v in pairs(original) do
if v == 'no' and k ~= 'wikidata' then
if v == 'no' and k ~= 'wikidata' then
--Si vale "no" dejar en blanco el argumento para no obtener el valor
--Si vale "no" dejar en blanco el argumento para no obtener el valor
--de Wikidata
--de Wikidata
copia[k] = ''
copia[k] = ''
elseif v~='' then
elseif v~='' then
--Si está en blanco dejarlo a nil para obtener en su caso el valor de
--Si está en blanco dejarlo a nil para obtener en su caso el valor de
-- Wikidata si no hay otro argumento con un nombre similar
-- Wikidata si no hay otro argumento con un nombre similar
copia[k] = original[k]
copia[k] = original[k]
end
end
end
end
return copia
return copia
end
end


function obtenerEtiquetaWikidata()
function obtenerEtiquetaWikidata()
if Entidad and Entidad.labels and Entidad.labels.es then
if Entidad and Entidad.labels and Entidad.labels.es then
return Entidad.labels.es.value
return Entidad.labels.es.value
end
end
end
end


function propiedad(idPropiedad,opciones)
function propiedad(idPropiedad,opciones)
if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
if not opciones then
if not opciones then
opciones = {}
opciones = {}
end
end
opciones['propiedad'] = idPropiedad
opciones['propiedad'] = idPropiedad


valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])


if valorPropiedad and valorPropiedad:match('%[%[:d:') then
if valorPropiedad and valorPropiedad:match('%[%[:d:') then
algunaPropiedadEnlazaWikidata = true
algunaPropiedadEnlazaWikidata = true
end
end


return valorPropiedad
return valorPropiedad
end
end
end
end


--Devuelve la fecha de inicio y fin de la construcción
--Devuelve la fecha de inicio y fin de la construcción
function obtenerfechasObra(unaTabla)
function obtenerfechasObra(unaTabla)
-- TODO: MóduloWikidataFormatos.formatoPeriodo ?
--local evsig = elementoTabla(Entidad, 'claims','P793',1)
--local construccion = elementoTabla(Entidad,'claims','P793',1)
--local evsig = elementoTabla(Entidad, 'claims','P793',1)
--local construccion = elementoTabla(Entidad,'claims','P793',1)
local precision = elementoTabla(unaTabla,'qualifiers','P580',1,'datavalue','value','precision')
local precision = elementoTabla(unaTabla,'qualifiers','P580',1,'datavalue','value','precision')
if precision ~= 11 then
if precision ~= 11 then
return
return
end
end
local fechainicio = elementoTabla(unaTabla,'qualifiers','P580',1,'datavalue','value','time')
local fechainicio = elementoTabla(unaTabla,'qualifiers','P580',1,'datavalue','value','time')
local anyoinicio = tonumber(fechainicio:sub(2,5))
local anyoinicio = tonumber(fechainicio:sub(2,5))
local mesinicio = tonumber(fechainicio:sub(7,8))
local mesinicio = tonumber(fechainicio:sub(7,8))
local diainicio = tonumber(fechainicio:sub(10,11))
local diainicio = tonumber(fechainicio:sub(10,11))
local fechafin = elementoTabla(unaTabla,'qualifiers','P582',1,'datavalue','value','time')
local fechafin = elementoTabla(unaTabla,'qualifiers','P582',1,'datavalue','value','time')
local anyofin = tonumber(fechafin:sub(2,5))
local anyofin = tonumber(fechafin:sub(2,5))
local mesfin = tonumber(fechafin:sub(7,8))
local mesfin = tonumber(fechafin:sub(7,8))
local diafin = tonumber(fechafin:sub(10,11))
local diafin = tonumber(fechafin:sub(10,11))
local meses = {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"}
local meses = {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"}
local retorno = {}
local retorno = {}
retorno['fechainicio'] = diainicio ..' de '..meses[mesinicio]..' de '..anyoinicio
retorno['fechainicio'] = diainicio ..' de '..meses[mesinicio]..' de '..anyoinicio
retorno['fechafin'] = diafin..' de '..meses[mesfin]..' de ' ..anyofin
retorno['fechafin'] = diafin..' de '..meses[mesfin]..' de ' ..anyofin
return retorno
return retorno
end
end

--Devuelve la fecha ceremonia de inauguración
--Devuelve la fecha ceremonia de inauguración
function devolvercereminaug(unaTabla)
function devolvercereminaug(unaTabla)
-- TODO: MóduloWikidataFormatos.formatoPeriodo ?
local precision = elementoTabla(unaTabla,'qualifiers','P580',1,'datavalue','value','precision')
local precision = elementoTabla(unaTabla,'qualifiers','P580',1,'datavalue','value','precision') -- 'fecha de inicio'
if precision ~= 11 then
if precision ~= 11 then
return
return
end
end
local fecha = elementoTabla(unaTabla,'qualifiers','P585',1,'datavalue','value','time')
local fecha = elementoTabla(unaTabla,'qualifiers','P585',1,'datavalue','value','time') -- 'fecha'
local anyo = tonumber(fechainicio:sub(2,5))
local anyo = tonumber(fechainicio:sub(2,5))
local mes = tonumber(fechainicio:sub(7,8))
local mes = tonumber(fechainicio:sub(7,8))
local meses = {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"}
local meses = {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"}
local dia = tonumber(fechainicio:sub(10,11))
local dia = tonumber(fechainicio:sub(10,11))
local fecha = elementoTabla(unaTabla,'qualifiers','P582',1,'datavalue','value','time')
local fecha = elementoTabla(unaTabla,'qualifiers','P582',1,'datavalue','value','time') -- 'fecha de fin'
local retorno = dia .."de" ..meses[mes] .. "de" ..anyo
local retorno = dia .."de" ..meses[mes] .. "de" ..anyo
return retorno
return retorno
end
end


--Devuelve los campos de elementos significativos de Wikidata
--Devuelve los campos de elementos significativos de Wikidata
function devolverelemensigs(unaEntidad)
function devolverelemensigs(unaEntidad)
local evsigs = elementoTabla(unaEntidad,'claims','P793')
local evsigs = elementoTabla(unaEntidad,'claims','P793') -- 'evento significativo'
if evsigs == nil then
if evsigs == nil then
return
return
end
end
local elementos = {}
local elementos = {}
for i, j in pairs(evsigs)
for i, j in pairs(evsigs)
do
do
valorQ = elementoTabla(j,'mainsnak','datavalue','value','id')
valorQ = elementoTabla(j,'mainsnak','datavalue','value','id')
if valorQ == 'Q385378' then
if valorQ == 'Q385378' then -- 'construcción'
elementos[valorQ] = obtenerfechasObra(j)
elementos[valorQ] = obtenerfechasObra(j)
elseif valorQ == 'Q3010369' then -- 'ceremonia de inauguración'
end
elementos[valorQ] = devolvercereminaug(j)
if valorQ == 'Q3010369' then
elseif valorQ == 'Q744913' then -- 'accidente de aviación'
elementos[valorQ] = devolvercereminaug(j)
elementos[valorQ] = elementoTabla(construccion,'qualifiers','P805',1,'datavalue','value','id')
end
if valorQ == 'Q744913' then
elseif valorQ == 'Q1068633' then -- 'primera piedra'
elementos[valorQ]= elementoTabla(construccion,'qualifiers','P805',1,'datavalue','value','id')
elementos[valorQ] = elementoTabla(construccion,'qualifiers','P585',1,'datavalue','value','time')
end
end
end
if valorQ == 'Q1068633' then
return elementos
elementos[valorQ]= elementoTabla(construccion,'qualifiers','P585',1,'datavalue','value','time')
end
end
return elementos
end
end

--Devuelve la altura en metros
function devolveraltura(unaTabla)
function obtenerColor()
-- TODO: revisar colores y contraste
local valores = elementoTabla(unaTabla,'claims','P2048')
local colores = {
local alturamaxima, unidadalturamaxima
['hotel'] = '#264796', -- revisar, azul demasiado oscuro, no se diferencia el texto
local retorno = {}
['edificio militar'] = '#665D1D', -- revisar, marrón demasiado oscuro, no se diferencia el texto
if valores == nil then
['cuartel'] = '#665D1D', -- ídem anterior
retorno.altura = ""
['bar'] = '#BFFF00', -- revisar, verde claro intenso, fosforito ?
retorno.alturamaxima= ""
['restaurante'] = '#BFFF00', -- ídem anterior
return retorno
['iglesia'] = '#F3D5E1', -- según {{Ficha de edificio religioso}}
else
['hospital'] = '#CB1D11', -- revisar, rojo demasiado fuerte
for i,j in pairs(valores)
}
do
valorQ = elementoTabla(j,'qualifiers','P518',1,'datavalue','value','id')
local tipoedificio = elementoTabla(Entidad,'claims','P31',1,'mainsnak','datavalue')
tipoedificio = elementoTabla(tipoedificio,'value','id')
if valorQ == 'Q26970842'then
local nombretipoedificio= mw.wikibase.getEntityObject(tipoedificio)
alturamaxima = elementoTabla(j,'mainsnak','datavalue','value','amount')
unidadalturamaxima = elementoTabla(alturamaxima,'mainsnak','datavalue','value','unit')
nombretipoedificio = elementoTabla(nombretipoedificio,'labels','es','value')
local uso = argumento['tipo'] or argumento ['Tipo'] or argumento['uso'] or argumento['Uso'] or argumento ['usos'] or argumento['Usos'] or propiedad('P366')
end
if valorQ == 'Q24192182'then
if uso == "militar" or uso == "Militar" then
return colores['edificio militar']
altura = elementoTabla(j,'mainsnak','datavalue','value','amount')
end
unidadaaltura = elementoTabla(j,'mainsnak','datavalue','value','unit')
return colores[nombretipoedificio] or '#ddd' -- según {{Ficha de edificio}} [original]
end
end
if unidadalturamaxima == "http://www.wikidata.org/entity/Q3710" or unidadalturamaxima == "Q3710" then
unidadalturamaxima = unidadalturamaxima * 0.3048
end
retorno.altura = string.gsub(tostring(altura)..'[[metro|m]]','+','')
retorno.alturamaxima = string.gsub(tostring(alturamaxima)..'[[metro|m]]','+','')
end
end

return retorno
function obtenerSuperficie()
-- global Entidad
local frame = mw.getCurrentFrame()
local valor = {}
local datos = elementoTabla(Entidad,'claims','P2046') -- 'superficie'
if datos ~= nil then
for i, j in pairs(datos)
do
local medida = elementoTabla(j,'mainsnak','datavalue','value','amount')
local unidad = elementoTabla(j,'mainsnak','datavalue','value','unit')
if medida ~= nil then
unidad = mw.ustring.gsub(unidad, '^.-/(Q%d+)$', '%1')
if unidad ~= 'Q25343' then -- unidades en 'metro cuadrado'
local unidades = {
-- véanse valores admitidos para 'superficie' en https://www.wikidata.org/wiki/Property:P2046#P2302
['Q2737347' ] = 'mm2',
['Q2489298' ] = 'cm2',
['Q25343' ] = 'm2', -- unidad de destino
['Q712226' ] = 'km2',
['Q185078' ] = 'dam2',
['Q35852' ] = 'ha',
['Q81292' ] = 'acre',
['Q232291' ] = 'sqmi',
['Q857027' ] = 'sqft',
['Q1063786' ] = 'sqin',
-- ['Q21074767'] = 'sqvt', -- medida antigua en desuso, [[versta]] cuadrada
-- ['Q669931' ] = 'dessiatin', -- medida antigua en desuso
-- ['Q935614' ] = 'rai', -- medida antigua en desuso
-- ['Q216795' ] = 'dunam', -- medida antigua en desuso, [[dunam]]
-- ['Q23931103'] = 'nmi²', -- no para edificios
-- ['Q254532' ] = 'sqdeg', -- no para edificios
-- ? 'sqyd'
}
medida = frame:preprocess('{{Convertir|' .. medida .. '|' .. unidades[unidad] .. '|m2|abr=3|disp=#}}')
end
valor[ #valor + 1 ] = frame:preprocess('{{Unidad|' .. tostring( tonumber( medida ) ) .. '|[[metro cuadrado|m²]]}}')
end
end
end
return mw.text.listToText( valor, ' o ', ' o ' )
end

function obtenerAlturas()
-- global Entidad
local frame = mw.getCurrentFrame()
local valor = {}
local datos = elementoTabla(Entidad,'claims','P2048') -- 'altura'
if datos ~= nil then
local valores = {}
local altmax = ''
local altarq = ''
for i, j in pairs(datos)
do
local medida = elementoTabla(j,'mainsnak','datavalue','value','amount')
local unidad = elementoTabla(j,'mainsnak','datavalue','value','unit')
if medida ~= nil then
unidad = mw.ustring.gsub(unidad, '^.-/(Q%d+)$', '%1')
if unidad ~= 'Q11573' then -- unidades en 'metro'
local unidades = {
-- véanse valores admitidos para 'altura' en https://www.wikidata.org/wiki/Property:P2048#P2302
['Q174789'] = 'mm',
['Q174728'] = 'cm',
-- ['Q11573'] = 'm', -- unidad de destino
['Q828224'] = 'km',
['Q218593'] = 'in',
['Q3710' ] = 'ft',
-- ['Q355198' ] = 'pixel', -- no para edificios
-- ['Q7673190'] = 'celda', -- no para edificios
-- ? 'yd'
}
medida = frame:preprocess('{{Convertir|' .. medida .. '|' .. unidades[unidad] .. '|m|abr=3|disp=#}}')
end
valores[i] = tonumber( medida )
local texto = frame:preprocess('{{Unidad|' .. tostring( valores[i] ) .. '|[[metro|m]]}}')
local parte = elementoTabla(j,'qualifiers','P518',1,'datavalue','value','id')
if parte == 'Q26970842' then -- 'altura máxima'
if altmax ~= '' then
altmax = altmax .. ' o '
end
altmax = altmax .. texto
elseif parte == 'Q24192182' then -- 'altura arquitectónica'
if altarq ~= '' then
altarq = altarq .. ' o '
end
altarq = altarq .. texto
end
end
end
-- cuando no se especifica la 'altura máxima' se muestra la máxima altura disponible:
if altmax == '' and #valores > 0 then
altmax = 0
for i,j in pairs(valores)
do
if altmax < tonumber(j) then
altmax = tonumber(j)
end
end
altmax = frame:preprocess('{{Unidad|' .. tostring(altmax) .. '|[[metro|m]]}}')
end
-- -- cuando no se especifica la 'altura arquitectónica' se muestran todas las alturas disponibles:
-- if altarq == '' and #valores > 0 then
-- altarq = ''
-- for i,j in pairs(valores)
-- do
-- if altarq ~= '' then
-- altarq = altarq .. ' o '
-- end
-- altarq = frame:preprocess('{{Unidad|' .. tostring(j) .. '|[[metro|m]]}}')
-- end
-- end
valor.maxima = altmax
valor.altura = altarq
end
return valor
end
end


function obtenerCalle()
function obtenerCalle()
-- global Entidad
Entidad = mw.wikibase.getEntityObject(argumento['id']) or {}
local valor = {}
local calles = elementoTabla(Entidad,'claims','P669')
local datos = elementoTabla(Entidad,'claims','P669') -- 'calle'
local retorno = ''
if calles == nil then
if datos ~= nil then
for i, j in pairs(datos)
return
do
else
local qid = elementoTabla(j,'mainsnak','datavalue','value','id')
for i, j in pairs(calles)
local obj = mw.wikibase.getEntityObject(qid)
do
if obj ~= nil then
local calle = elementoTabla(j, 'mainsnak','datavalue','value','id')
local nrocalle = elementoTabla(Entidad,'claims','P669',1,'qualifiers','P670',1,'datavalue')
local titulo = elementoTabla(obj,'labels','es','value')
local pagina = obj:getSitelink('eswiki')
nrocalle = elementoTabla(nrocalle,'value')
if titulo ~= nil then
local nombrecalle = mw.wikibase.getEntityObject(calle)
local entrada = ''
nombrecalle = elementoTabla(nombrecalle,'labels','es','value')
if pagina ~= nil then
local aux = mw.wikibase.getEntity(calle)
entrada = '[[' .. pagina .. '|' .. titulo .. ']]'
local pagina = aux:getSitelink('eswiki')
else
if pagina ~= nil then
entrada = titulo
if pagina ~= nombrecalle then
end
if nrocalle ~= nil then
local nrocalle = elementoTabla(j,'qualifiers','P670',1,'datavalue','value')
retorno = retorno.. '[['..pagina..'|'..nombrecalle..']] Nº'..nrocalle..' y '
if nrocalle ~= nil then
else
entrada = entrada .. ' n.º&nbsp;' .. nrocalle
retorno = retorno.. '[['..pagina..'|'..nombrecalle..']]'..' y '
end
end
valor[ #valor + 1 ] = entrada
else
end
if nrocalle ~= nil then
end
retorno = retorno.. nombrecalle..'Nº'..nrocalle..' y '
end
else
end
retorno = retorno.. nombrecalle..' y '
return mw.text.listToText( valor )
end
end
else
if nrocalle ~= nil then
retorno = retorno ..nombrecalle..'Nº'..nrocalle..' y '
else
retorno = retorno..nombrecalle..' y'
end
end
end
end
return string.sub(retorno,0,-3)
end
end


function obtenerMaterial()
function obtenerMaterial()
-- global Entidad
Entidad = mw.wikibase.getEntityObject(argumento['id']) or {}
local valor = {}
materiales = elementoTabla(Entidad,'claims','P186')
local datos = elementoTabla(Entidad,'claims','P186') -- 'material empleado'
local material = ""
if materiales ~= nil then
if datos ~= nil then
for i,j in pairs(datos)
local auxQ, aux
do
for i,j in pairs(materiales)
local qid = elementoTabla(j,'mainsnak','datavalue','value','id')
do
local obj = mw.wikibase.getEntityObject(qid)
auxQ = elementoTabla(j, 'mainsnak','datavalue','value','id')
if obj ~= nil then
aux = mw.wikibase.getEntityObject(auxQ) or {}
material = material ..'[['..elementoTabla(aux,'labels','es','value')..']]'..'<br>'
local titulo = elementoTabla(obj,'labels','es','value')
local pagina = obj:getSitelink('eswiki')
end
if titulo ~= nil then
end
if pagina ~= nil then
return material
valor[ #valor + 1 ] = '[[' .. pagina .. '|' .. titulo .. ']]'
else
valor[ #valor + 1 ] = titulo
end
end
end
end
end
return mw.text.listToText( valor )
end
end


return z
return z

Revisión del 15:51 26 may 2020

Este módulo no tiene página de documentación[crear]
local z = {}

local argumento={}
local Entidad
local ModuloFicha    = require('Módulo:Ficha')
local ModuloWikidata = require('Módulo:Wikidata')
local ModuloFormato  = require('Módulo:Formato texto')
local ModuloPaginas  = require('Módulo:Páginas')
local elementoTabla  = require('Módulo:Tablas').elemento
local sinBandera     = require('Módulo:Bandera').sinBandera
-- sin uso ?
local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local formatoURL = ModuloWikidataFormatos.formatoURL
local sinEnlazar = {['enlace']='no', ['linkback']='sí'}
local sinLapiz   = {}

function z.prueba(frame)    
return obtenerCalle()
end

function z.Ficha(frame)
	ModuloWikidata:setFrame(frame)
	argumento = obtenerArgumentosConValor(frame)
	if argumento['wikidata'] == 'no' and (argumento['fecha de inauguración'] 
		or argumento['fecha de demolición']
		) then
		obtenerDatosWikidata = false
		Entidad = nil
	else
		obtenerDatosWikidata = true
		-- Obtener los datos de la página donde se inserta la ficha de Wikidata.
		Entidad   = mw.wikibase.getEntityObject(argumento['id']) or {}
	end

	local pais = argumento['pais'] or argumento['país'] or propiedad('P17')
	local tipodivadministrativa = argumento['tipo_división_administrativa']
	local divadministrativa = argumento['división_administrativa']
	local imagen = argumento['imagen'] or argumento['Imagen'] or argumento['foto']
	local pieDeImagen

	if imagen then
		pieDeImagen = argumento['pie de imagen'] or argumento['pieimagen'] or
						argumento['descripción'] or argumento['descripcion'] or
						argumento['pie de foto'] or argumento['piedefoto'] or
						argumento['textoimagen'] or argumento['TextoImagen'] or
						argumento['texto_imagen'] or argumento['pie de foto']
	else
		imagen, pieDeImagen = obtenerImagenWikidata()
	end
	nombre = argumento['nombre'] or argumento['Nombre'] or
				obtenerEtiquetaWikidata() or
				ModuloPaginas.nombrePagina({desambiguar='sí'})
	nombrelocal = argumento['nombre local'] or argumento['Nombre local']
	if nombre and nombrelocal and nombre ~= nombrelocal then
		titulo = nombre .. '<br /><span style="font-size:smaller">' .. nombrelocal .. '</span>'
	else
		titulo = nombre
	end
	local color = obtenerColor()
	local estilotitulo = 'background-color:'..color.. '; font-style:normal'
	local estiloseccion = 'background-color:'..color
	local evsigs = devolverelemensigs(Entidad)
	if evsigs ~= nil then
		local fechainicio = argumento['inicio'] or argumento['Inicio'] or (evsigs['Q385378'] and evsigs['Q385378']['fechainicio']) or ''
		local fechafin = argumento['fin'] or argumento['Fin'] or (evsigs['Q385378'] and evsigs['Q385378']['fechainicio']) or ''
		local primerapiedra = argumento['fecha primera piedra'] or argumento['Fecha primera piedra'] or evsigs['Q106863'] or ''
	else
		local fechainicio = argumento['inicio'] or argumento['Inicio']
		local fechafin = argumento['fin'] or argumento['Fin'] or argumento['término']
		local primerapiedra = argumento['fecha primera piedra'] or argumento['Fecha primera piedra'] 
	end
	local direccionpostal = argumento['dirección'] or argumento['dirección postal'] or propiedad('P6375') or obtenerCalle()
	local codigopostal = argumento['código postal'] or propiedad('P281')
	if codigopostal then
		direccionpostal = ModuloFormato.separadosPorComa({direccionpostal, codigopostal})
	end
	local logotipo = argumento['logotipo'] or argumento['Logotipo'] or argumento['logo'] or argumento['Logotipo'] or propiedad('P154')
	if logotipo ~= nil then
		logotipo = '[[Archivo:'..logotipo..']]'
	end
	local Ficha =
	{
		['titulo'] = titulo,
		imagen = imagen,
		['tamañoimagen'] = argumento['tamaño de imagen'] or argumento['tamaño'] or
							argumento['tamaño imagen'] or argumento['tamañoimagen'] or
							argumento['tamañodelaimagen'] or argumento['tamaño de foto'] or
							'220px',
		pie = pieDeImagen,
		tipocabecera = 'edificio',
		estilotitulo = estilotitulo,
		estiloseccion = estiloseccion,
		estiloetiqueta   = 'width:33%;',
		{'',logotipo},
		{tipo = "sección",
			['titulo'] = "Localización",
			{'País', sinBandera( pais )},
			{tipodivadministrativa, sinBandera( divadministrativa )},
			{'Coordenadas' , argumento['coor'] or argumento['coordenadas'] or propiedad('P625', {formato='dms', display='inline,title', tipo='edu', uno='sí'})},
			{'Localización', sinBandera( argumento['localización'] or
				ModuloFormato.enVariasLineas({ModuloFormato.separadosPorComa({argumento['ciudad'], argumento['estado'], argumento['país']})}) or
				ModuloFormato.enVariasLineas({propiedad('P969'), ModuloFormato.separadosPorComa({propiedad('P131'),propiedad('P17')})}) )},
			{'Dirección postal', sinBandera( direccionpostal )},
		},
		{tipo = "sección",
			['titulo'] = "Información general",
			{'Nombres anteriores', argumento['nombres anteriores'] or argumento['Nombres anteriores']},
			{'Otros nombres',argumento['otros nombres'] or argumento['Otros nombres'] or propiedad('P4970')},
			{'Organización', argumento['organización'] or argumento['Organización'] or propiedad('P749')},
			{'Propietario', argumento['dueño'] or argumento['Dueño'] or propiedad('P127')},
			{'Estado', argumento['estado'] or argumento['Estado']},
			{'Catalogación', argumento['catalogación'] or argumento['Catalogación']},
			{'Se conecta con', argumento['se conecta con'] or argumento['Se conecta con']},
			{'Cruza',argumento['cruza'] or argumento['Cruza']},
			{'Número de vanos', argumento['ojos'] or argumento['Ojos']},
			{'Ocupante', argumento['ocupante'] or argumento['Ocupante']},
			{'Usos', argumento['uso'] or argumento['Uso'] or propiedad('P366')},
			{'Inicio de obra', fechainicio},
			{'[[Coronación]]', argumento['coronación'] or argumento['Coronación']},
			{'Finalización de obra', fechafin},
			{'Fundación', argumento['fundación'] or argumento['Fundación'] or propiedad('P571')},
			{'Clausura', argumento['clausura'] or argumento['Clausura'] or propiedad('P3999')},
			{'Número de camas', argumento['camas'] or argumento['Camas'] or propiedad('P6801')},
			{'Número de télefono', argumento['telefono'] or argumento['Telefono'] or propiedad('P1329')},
			{'Emergencias', argumento['emergencias'] or argumento['Emergencias']},
			{'Afiliación', argumento['afiliación'] or argumento['Afiliación'] or propiedad('P1416')},
			{'Red', argumento['red'] or argumento['Red']},
			{'Clasificación', argumento['clasificación'] or argumento['Clasificación']},
			{'Especialidad', argumento['especialidad'] or argumento['Especialidad']},
			{'Financiamiento', argumento['financiamiento'] or argumento['Financiamiento']},
			{'Estilo', argumento['estilo'] or argumento['Estilo'] or propiedad('P149')},
			{'Arrendatario actual', argumento['arrendatarios'] or argumento['Arrendatarios']},
			{'Nombrado en honor a', argumento['nombrado en honor a'] or argumento['Nombrado en honor a'] or propiedad('P138')},
			{'Primera piedra', primerapiedra },
			{'Antena', argumento['antena'] or argumento['Antena']},
			{'Piso más alto', argumento['piso mas alto'] or argumento['Piso mas alto'] or propiedad('P1101')},
		},
		{tipo = "sección",
			['titulo'] = "Altura",
			{'Altura arquitectónica', argumento['altura arquitectonica'] or argumento['Altura arquitectonica'] or argumento['altura'] or argumento['Altura'] or obtenerAlturas().altura},
			{'Altura máxima', argumento['altura maxima'] or argumento['Altura maxima'] or obtenerAlturas().maxima},
		},
		{tipo="sección",
			['título']="Record de altura",
			{argumento['record de altura'] or argumento['Record de altura']},
			{'Predecesor', argumento['precedecesor'] or argumento['Predecesor']},
		},
		{tipo = "sección",
			['titulo'] = "Detalles técnicos",
			{'Material', argumento['material'] or argumento['Material'] or obtenerMaterial()},
			{'Superficie', argumento['superficie'] or argumento['Superficie'] or obtenerSuperficie()},
			{'Número de plantas', argumento['numero de plantas'] or argumento['Numero de plantas'] or propiedad('P1101')},
			{'Número de ascensores', argumento['numero de ascensores'] or argumento['Numero de ascensores'] or propiedad('P1301')},
		},
		{tipo = "sección",
			['titulo'] = 'Diseño y construcción',
			{'Arquitecto', argumento['arquitecto'] or argumento['Arquitecto'] or propiedad('P84')},
			{'Ingeniero', argumento['ingeniero estructural'] or argumento['Ingeniero de servicios']},
			{'Ingeniero de servicios', argumento['ingeniero de servicios'] or argumento['Ingeniero de servicios']},
			{'Ingeniero civil', argumento['ingeniero civil'] or argumento['Ingeniero civil']},
			{'Otros', argumento['otros'] or argumento['Otros']},
			{'Ingeniero estructural', argumento['ingeniero estructural'] or argumento['Ingeniero estructural'] or propiedad('P631')},
			{'Autor', argumento['autor'] or argumento['Autor']},
			{'Contratista', argumento['contratista'] or argumento['Contratista']},
			{'Viviendas', argumento['viviendas'] or argumento['Viviendas']},
			{'Conocido por', argumento['conocido por'] or argumento['Conocido por']},
		},
		{tipo = "sección",
			['titulo'] = "Remodelación",
			{'Ingeniero civil', argumento['rem ingeniero civil'] or argumento['Rem ingeniero civil']},
			{'Otros', argumento['rem otros'] or argumento['Rem otros']},
			{'Ingeniero estructural', argumento['rem ingeniero estructural'] or argumento['Rem ingeniero estructural']},
			{'Contratista', argumento['contratista'] or argumento['Contratista']},
			{'Premios', argumento['rem premios'] or argumento['rem premios']},
		},
		{tipo = "sección",
			["titulo"] = "Otra información",
			--Bar o restaurante
			{"N.º de asientos", argumento["nro de asientos"] or argumento["Nro de asientos"] or propiedad("P1083")},
			{"N.º de tiendas", argumento['nro de tiendas'] or argumento['Nro de tiendas'] },
			--Hotel
			{"N.º de habitaciones", argumento["nro de habitaciones"] or argumento["Nro de habitaciones"]},
			{"N.º de suites", argumento["nro de suites"] or argumento["Nro de suites"]},
			{"N.º de restaurantes", argumento["nro de restaurantes"] or argumento["Nro de restaurantes"]},
			{"N.º de bares", argumento["nro de bares"] or argumento["Nro de bares"]},
			{"Estrellas", argumento["estrellas"] or argumento["Estrellas"]},
			--Edificios religiosos
			{"Culto", argumento["culto"] or argumento["Culto"] or propiedad("P140")},
			{"Diócesis", argumento["diocesis"] or argumento["Diocesis"] or propiedad("P708")},
			{"Advocación", argumento["advocacion"] or argumento["Advocacion"] or propiedad("P825")},
			--Edificios militares
			{"Controlador", argumento["controlado por"] or argumento["Controlado por"] },
			{"Guarnición", argumento["guarnición"] or argumento["Guarnición"]},
			{"Comandante actual", argumento["comandante actual"] or argumento["Comandante actual"]},
			{"Ocupantes", argumento["ocupantes"] or argumento["Ocupantes"] or propiedad("P466")},
			{"Batallas", argumento["batallas"] or argumento["Batallas"]},
			{"Eventos", argumento["eventos"] or argumento["Eventos"]},
			{"Período", argumento["periodo"] or argumento["Periodo"]},
		},
		{tipo = "sección",
			['titulo'] = "Sitio web",
			{'Sitio web', argumento['sitio web'] or argumento['Sitio web'] or propiedad('P856')},
		},
		{tipo = "sección",
			['titulo'] = "Referencias",	
			{argumento["premios"] or argumento["Premios"] or propiedad("P166")},
			{argumento['referencias'] or argumento['Referencias']},
		}
	}
	return ModuloFicha.infobox(Ficha)
end

function obtenerImagenWikidata()
	local imagen, valorImagen, piesDeImagen, k, pieDeImagen
	if not Entidad then
		return
	end
	local imagen = elementoTabla(Entidad, 'claims','P18',1)

	if not imagen then
		return
	end

	-- Obtener el nombre de la imagen
	valorImagen =  elementoTabla(imagen, 'mainsnak','datavalue','value') -- Por ejemplo, imagen.jpg

	-- Obtener los pies de la imagen, uno por idioma
	piesDeImagen =  elementoTabla(imagen, 'qualifiers','P2096')

	-- Encontrar el pie en español (aquel con datavalue.value.language = "es")
	if piesDeImagen then
		for k,pieDeImagen in pairs(piesDeImagen) do
			if pieDeImagen.datavalue.value.language=='es' then
				-- devolver la imagen y el texto del pie de la imagen en español
				return valorImagen, pieDeImagen.datavalue.value.text
			end
		end
	end

	-- Si no hay pie de imagen en español comprueba si hay fecha especificada para la imagen
	piesDeImagen = elementoTabla(imagen, 'qualifiers', 'P585')

	if piesDeImagen and piesDeImagen[1] then
		return valorImagen, nombre .. ' en ' .. require('Módulo:Wikidata/Fecha').FormateaFechaHora(piesDeImagen[1].datavalue.value, {['formatoFecha']='año',['enlace']='no'})
	end

	-- Sin pie de imagen en español
    return valorImagen
end

function obtenerArgumentosConValor(frame)
	local original

	if frame == mw.getCurrentFrame() then
		original = frame:getParent().args
	else
		original = frame.args or frame
	end
    
	local copia= {}

	for k,v in pairs(original) do
		if v == 'no' and k ~= 'wikidata' then
			--Si vale "no" dejar en blanco el argumento para no obtener el valor
			--de Wikidata
			copia[k] = ''
		elseif v~='' then
			--Si está en blanco dejarlo a nil para obtener en su caso el valor de 
			-- Wikidata si no hay otro argumento con un nombre similar
			copia[k] = original[k]
		end
	end
    
	return copia
end

function obtenerEtiquetaWikidata()
	if Entidad and Entidad.labels and Entidad.labels.es then
		return Entidad.labels.es.value
	end
end

function propiedad(idPropiedad,opciones)
	if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
		if not opciones then
			opciones = {}
		end
		opciones['propiedad'] = idPropiedad

		valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])

		if valorPropiedad and valorPropiedad:match('%[%[:d:') then
			algunaPropiedadEnlazaWikidata = true
		end

		return valorPropiedad
	end
end

--Devuelve la fecha de inicio y fin de la construcción
function obtenerfechasObra(unaTabla)
	-- TODO: MóduloWikidataFormatos.formatoPeriodo ?
	--local evsig = elementoTabla(Entidad, 'claims','P793',1)
	--local construccion = elementoTabla(Entidad,'claims','P793',1)
        
	local precision = elementoTabla(unaTabla,'qualifiers','P580',1,'datavalue','value','precision')
	if precision ~= 11 then
		return
	end
       	
	local fechainicio = elementoTabla(unaTabla,'qualifiers','P580',1,'datavalue','value','time')
	local anyoinicio = tonumber(fechainicio:sub(2,5))
	local mesinicio = tonumber(fechainicio:sub(7,8))
	local diainicio = tonumber(fechainicio:sub(10,11))
	local fechafin = elementoTabla(unaTabla,'qualifiers','P582',1,'datavalue','value','time')
	local anyofin = tonumber(fechafin:sub(2,5))
	local mesfin = tonumber(fechafin:sub(7,8))
	local diafin = tonumber(fechafin:sub(10,11))
	local meses = {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"}
	local retorno = {}
	retorno['fechainicio'] = diainicio ..' de '..meses[mesinicio]..' de '..anyoinicio
	retorno['fechafin'] = diafin..' de '..meses[mesfin]..' de ' ..anyofin
	return retorno
end

--Devuelve la fecha ceremonia de inauguración 
function devolvercereminaug(unaTabla)
	-- TODO: MóduloWikidataFormatos.formatoPeriodo ?
	local precision = elementoTabla(unaTabla,'qualifiers','P580',1,'datavalue','value','precision') -- 'fecha de inicio'
	if precision ~= 11 then
		return
	end
	   
	local fecha = elementoTabla(unaTabla,'qualifiers','P585',1,'datavalue','value','time') -- 'fecha'
	local anyo = tonumber(fechainicio:sub(2,5))
	local mes = tonumber(fechainicio:sub(7,8))
	local meses = {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"}
	local dia = tonumber(fechainicio:sub(10,11))
	local fecha = elementoTabla(unaTabla,'qualifiers','P582',1,'datavalue','value','time') -- 'fecha de fin'
	local retorno = dia .."de" ..meses[mes] .. "de" ..anyo
	return retorno
end

--Devuelve los campos de elementos significativos de Wikidata
function devolverelemensigs(unaEntidad)
	local evsigs = elementoTabla(unaEntidad,'claims','P793') -- 'evento significativo'
	if evsigs == nil then
		return
	end
	local elementos = {}
	for i, j in pairs(evsigs)
	do
		valorQ =  elementoTabla(j,'mainsnak','datavalue','value','id')
		if valorQ == 'Q385378' then -- 'construcción'
			elementos[valorQ] = obtenerfechasObra(j)
		elseif valorQ == 'Q3010369' then -- 'ceremonia de inauguración'
			elementos[valorQ] = devolvercereminaug(j)
		elseif valorQ == 'Q744913' then -- 'accidente de aviación'
			elementos[valorQ] = elementoTabla(construccion,'qualifiers','P805',1,'datavalue','value','id')
		elseif valorQ == 'Q1068633' then -- 'primera piedra'
			elementos[valorQ] = elementoTabla(construccion,'qualifiers','P585',1,'datavalue','value','time')
		end
	end
	return elementos
end

function obtenerColor()
	-- TODO: revisar colores y contraste
	local colores = {
		['hotel'] = '#264796', -- revisar, azul demasiado oscuro, no se diferencia el texto
		['edificio militar'] = '#665D1D', -- revisar, marrón demasiado oscuro, no se diferencia el texto
		['cuartel'] =  '#665D1D', -- ídem anterior
		['bar'] = '#BFFF00', -- revisar, verde claro intenso, fosforito ?
		['restaurante'] = '#BFFF00', -- ídem anterior
		['iglesia'] = '#F3D5E1', -- según {{Ficha de edificio religioso}}
		['hospital'] = 	'#CB1D11', -- revisar, rojo demasiado fuerte
	}
	local tipoedificio = elementoTabla(Entidad,'claims','P31',1,'mainsnak','datavalue')
	tipoedificio = elementoTabla(tipoedificio,'value','id')
	local nombretipoedificio= mw.wikibase.getEntityObject(tipoedificio)
    nombretipoedificio = elementoTabla(nombretipoedificio,'labels','es','value')
    local uso =  argumento['tipo'] or argumento ['Tipo'] or argumento['uso'] or argumento['Uso'] or argumento ['usos'] or argumento['Usos'] or propiedad('P366')
    if uso == "militar" or uso == "Militar" then
    	return colores['edificio militar']
    end
	return colores[nombretipoedificio] or '#ddd' -- según {{Ficha de edificio}} [original]
end

function obtenerSuperficie()
	-- global Entidad
	local frame = mw.getCurrentFrame()
	local valor = {}
	local datos = elementoTabla(Entidad,'claims','P2046') -- 'superficie'
	if datos ~= nil then
		for i, j in pairs(datos)
		do
			local medida = elementoTabla(j,'mainsnak','datavalue','value','amount')
			local unidad = elementoTabla(j,'mainsnak','datavalue','value','unit')
			if medida ~= nil then
				unidad = mw.ustring.gsub(unidad, '^.-/(Q%d+)$', '%1')
				if unidad ~= 'Q25343' then -- unidades en 'metro cuadrado'
					local unidades = {
						-- véanse valores admitidos para 'superficie' en https://www.wikidata.org/wiki/Property:P2046#P2302
						['Q2737347' ] = 'mm2',
						['Q2489298' ] = 'cm2',
						['Q25343'   ] = 'm2', -- unidad de destino
						['Q712226'  ] = 'km2',
						['Q185078'  ] = 'dam2',
						['Q35852'   ] = 'ha',
						['Q81292'   ] = 'acre',
						['Q232291'  ] = 'sqmi',
						['Q857027'  ] = 'sqft',
						['Q1063786' ] = 'sqin',
						-- ['Q21074767'] = 'sqvt', -- medida antigua en desuso, [[versta]] cuadrada
						-- ['Q669931'  ] = 'dessiatin', -- medida antigua en desuso
						-- ['Q935614'  ] = 'rai', -- medida antigua en desuso
						-- ['Q216795'  ] = 'dunam', -- medida antigua en desuso, [[dunam]]
						-- ['Q23931103'] = 'nmi²', -- no para edificios
						-- ['Q254532'  ] = 'sqdeg', -- no para edificios
						-- ? 'sqyd'
					}
					medida = frame:preprocess('{{Convertir|' .. medida .. '|' .. unidades[unidad] .. '|m2|abr=3|disp=#}}')
				end
				valor[ #valor + 1 ] = frame:preprocess('{{Unidad|' .. tostring( tonumber( medida ) ) .. '|[[metro cuadrado|m²]]}}')
			end
		end
	end
	return mw.text.listToText( valor, ' o ', ' o ' )
end

function obtenerAlturas()
	-- global Entidad
	local frame = mw.getCurrentFrame()
	local valor = {}
	local datos = elementoTabla(Entidad,'claims','P2048') -- 'altura'
	if datos ~= nil then
		local valores = {}
		local altmax = ''
		local altarq = ''
		for i, j in pairs(datos)
		do
			local medida = elementoTabla(j,'mainsnak','datavalue','value','amount')
			local unidad = elementoTabla(j,'mainsnak','datavalue','value','unit')
			if medida ~= nil then
				unidad = mw.ustring.gsub(unidad, '^.-/(Q%d+)$', '%1')
				if unidad ~= 'Q11573' then -- unidades en 'metro'
					local unidades = {
						-- véanse valores admitidos para 'altura' en https://www.wikidata.org/wiki/Property:P2048#P2302
						['Q174789'] = 'mm',
						['Q174728'] = 'cm',
						-- ['Q11573'] = 'm', -- unidad de destino
						['Q828224'] = 'km',
						['Q218593'] = 'in',
						['Q3710'  ] = 'ft',
						-- ['Q355198' ] = 'pixel', -- no para edificios
						-- ['Q7673190'] = 'celda', -- no para edificios
						-- ? 'yd'
					}
					medida = frame:preprocess('{{Convertir|' .. medida .. '|' .. unidades[unidad] .. '|m|abr=3|disp=#}}')
				end
				valores[i] = tonumber( medida )
				local texto = frame:preprocess('{{Unidad|' .. tostring( valores[i] ) .. '|[[metro|m]]}}')
				local parte = elementoTabla(j,'qualifiers','P518',1,'datavalue','value','id')
				if parte == 'Q26970842' then -- 'altura máxima'
					if altmax ~= '' then
						altmax = altmax .. ' o '
					end
					altmax = altmax .. texto
				elseif parte == 'Q24192182' then -- 'altura arquitectónica'
					if altarq ~= '' then
						altarq = altarq .. ' o '
					end
					altarq = altarq .. texto
				end
			end
		end
		-- cuando no se especifica la 'altura máxima' se muestra la máxima altura disponible:
		if altmax == '' and #valores > 0 then
			altmax = 0
			for i,j in pairs(valores)
			do
				if altmax < tonumber(j) then
					altmax = tonumber(j)
				end
			end
			altmax = frame:preprocess('{{Unidad|' .. tostring(altmax) .. '|[[metro|m]]}}')
		end
	--	-- cuando no se especifica la 'altura arquitectónica' se muestran todas las alturas disponibles:
	--	if altarq == '' and #valores > 0 then
	--		altarq = ''
	--		for i,j in pairs(valores)
	--		do
	--			if altarq ~= '' then
	--				altarq = altarq .. ' o '
	--			end
	--			altarq = frame:preprocess('{{Unidad|' .. tostring(j) .. '|[[metro|m]]}}')
	--		end
	--	end
		valor.maxima = altmax
		valor.altura = altarq
	end
	return valor
end

function obtenerCalle()
	-- global Entidad
	local valor = {}
	local datos = elementoTabla(Entidad,'claims','P669') -- 'calle'
	if datos ~= nil then
		for i, j in pairs(datos)
		do
			local qid = elementoTabla(j,'mainsnak','datavalue','value','id')
			local obj = mw.wikibase.getEntityObject(qid)
			if obj ~= nil then
				local titulo = elementoTabla(obj,'labels','es','value')
				local pagina = obj:getSitelink('eswiki')
				if titulo ~= nil then
					local entrada = ''
					if pagina ~= nil then
						entrada = '[[' .. pagina .. '|' .. titulo .. ']]'
					else
						entrada = titulo
					end
					local nrocalle = elementoTabla(j,'qualifiers','P670',1,'datavalue','value')
					if nrocalle ~= nil then
						entrada = entrada .. ' n.º&nbsp;' .. nrocalle
					end
					valor[ #valor + 1 ] = entrada
				end
			end
		end
	end
	return mw.text.listToText( valor )
end

function obtenerMaterial()
	-- global Entidad
	local valor = {}
	local datos = elementoTabla(Entidad,'claims','P186') -- 'material empleado'
	if datos ~= nil then
		for i,j in pairs(datos)
		do
			local qid = elementoTabla(j,'mainsnak','datavalue','value','id')
			local obj = mw.wikibase.getEntityObject(qid)
			if obj ~= nil then
				local titulo = elementoTabla(obj,'labels','es','value')
				local pagina = obj:getSitelink('eswiki')
				if titulo ~= nil then
					if pagina ~= nil then
						valor[ #valor + 1 ] = '[[' .. pagina .. '|' .. titulo .. ']]'
					else
						valor[ #valor + 1 ] = titulo
					end
				end
			end
		end
	end
	return mw.text.listToText( valor )
end

return z