Módulo:Zona de pruebas/Ezarate/Ficha de edificio

Este módulo no tiene página de documentación[crear]
local z = {}
local argumentos
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)
	ModuloWikidata:setFrame(frame)
	local aux = frame
	local valor = ''
    while aux ~= nil
      do
      	valor = valor..aux:getTitle()..' '
      	aux = aux:getParent()
      end	
	return valor
end

function z.Ficha(frame)
	ModuloWikidata:setFrame(frame)
	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)
	local fechainicio, fichafin, primerapiedra
	if evsigs ~= nil then
		 fechainicio = argumento['inicio'] or argumento['Inicio'] or (evsigs['Q385378']) or ''
		 fechafin = argumento['fin'] or argumento['Fin'] or (evsigs['Q385378']) or ''
		 primerapiedra = argumento['fecha primera piedra'] or argumento['Fecha primera piedra'] or evsigs['Q106863'] or ''
	else
		 fechainicio = argumento['inicio'] or argumento['Inicio']
		 fechafin = argumento['fin'] or argumento['Fin'] or argumento['término']
		 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 valor = ''
 local aux = frame
 while(aux ~= nil)
 do
 if aux.args ~= nil then	
 for i, j in pairs(aux.args)
     do
     	valor = valor ..i..' '..j..' '
     	argumento[i] = j
     end	
end
 aux = aux:getParent()
end
return 
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
				table.insert( valor, 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
					table.insert( valor, 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
						table.insert( valor, '[[' .. pagina .. '|' .. titulo .. ']]' )
					else
						table.insert( valor, titulo )
					end
				end
			end
		end
	end
	return mw.text.listToText( valor )
end

return z