Bahaipedia
Bahaipediaدانشنامه بهائی
Menú
Cambios recientes
Haga su pregunta
Página al azar
Categorías
Ayuda en Wikipedia
En otros proyectos
Herramientas
Lo que enlaza aquí
Cambios relacionados
Subir archivo
Páginas especiales
Versión para imprimir
Enlace permanente
Información de la página
Módulo
Discusión
Ver historial
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Navigation
Navigation
Navegación
Navigation
ナビゲーション
Điều hướng
导航
Navegação
ناوبری
Навигация
Cambios recientes
Haga su pregunta
Página al azar
Categorías
Ayuda en Wikipedia
En otros proyectos
Learn more
Weitere Informationen
Aprender más
En savoir plus
詳しく読む
Tìm hiểu thêm
了解更多
Saiba mais
یاد بگیرید بیشتر
Узнать больше
Fe bahá’í
Bahá’u’lláh
‘Abdu’l-Bahá
Principios bahá’ís
Tools
Werkzeuge
Herramientas
Outils
ツール
Công cụ
工具
Ferramentas
ابزارها
Инструменты
Lo que enlaza aquí
Cambios relacionados
Subir archivo
Páginas especiales
Versión para imprimir
Enlace permanente
Información de la página
Translations
Übersetzungen
Traducciones
Traductions
各言語版
Bản dịch
翻译
Traduções
به زبان‌های دیگر
Переводы

Módulo:Wikidata/Formato lugar

De Bahaipedia
< Módulo:Wikidata
Saltar a:navegación, buscar

local p = {}

local separadosPorComa           = require('Módulo:Formato texto').separadosPorComa
local moduloTablas               = require('Módulo:Tablas')
	local elementoTabla          = moduloTablas.elemento
local moduloWikidataFormatos     = require('Módulo:Wikidata/Formatos')
	local enlazar                = moduloWikidataFormatos.enlazar
	local obtenerDatos           = moduloWikidataFormatos.obtenerDatos
local Date                       = require('Módulo:Date')._Date

function p.formatoLugar(valor, opciones, frame, calificativos)
	-- Función que devuelve algo de la forma Lugar, entidad territorial administrativa, país
	
	function obtenerOcurrenciaAFecha(tabla, fecha)
		if not tabla or not fecha then
			return
		end
		
		local fechaInicio, fechaFin
		fecha = Date(fecha)
		
		--if true then return require('Módulo:Tablas').tostring(tabla) end
		--
		for k,v in pairs(tabla) do
			fechaInicio = elementoTabla(v,'qualifiers','P580',1,'datavalue','value','time')
			fechaFin    = elementoTabla(v,'qualifiers','P582',1,'datavalue','value','time')
			fechaInicio = Date(fechaInicio)
			fechaFin    = Date(fechaFin)
			
			if fechaInicio and fechaFin then
				if  fecha >= fechaInicio and
					fecha <= fechaFin then
						return k
				end
			elseif fechaInicio then
				if  fecha >= fechaInicio then
						return k
				end
			elseif fechaFin then
				if  fecha <= fechaFin then
						return k
				end
			end
		end
			
	end
	
	function obtenerOcurrenciaRangoPreferente(tabla)
		if not tabla then
			return
		end
		for k,v in pairs(tabla) do
			if v.rank == 'preferred' then
				return k
			end
		end
	end
	
	local idLugar, enlaceLugar, etiquetaLugar, lugarEnlazado
	local entidadTerritorialAdministrativaEnlazada	
	local idPais, enlacePais, etiquetaPais, paisEnlazado
	local fecha
	
	-- Validar que está informado el id del lugar.
	if not valor or not valor['numeric-id'] then 
		return
	end
	
	if opciones then
		fecha = opciones.fecha
	end
	
	-- Obtener primero la entidad territorial administrativa y el país de los calificativos si es posible
	-- No se obtiene primero el lugar, que sería lo más lógico, porque se obtendrá de forma diferente según
	-- estén o no informados los calificativos
	
	if calificativos then
		entidadTerritorialAdministrativaEnlazada = enlazar(obtenerDatos(elementoTabla(calificativos,'P131',1,'datavalue','value')))
		enlacePais, etiquetaPais, idPais         = obtenerDatos(elementoTabla(calificativos,'P37',1,'datavalue','value'))
		paisEnlazado                             = enlazar(enlacePais, etiquetaPais, idPais)
	end

	if paisEnlazado then
		enlaceLugar, etiquetaLugar, idLugar = obtenerDatos(valor)
		lugarEnlazado = enlazar(enlaceLugar, etiquetaLugar, idLugar)
	else
	 -- Si el lugar no tiene el calificativo de país obtenerlo de la propiedad país de la 
	 -- entidad de Wikidata del lugar.
	 
	 -- De momento no se obtiene la entidad administrativa (tiene unas barbaridades...)
		local entidad
		
		idLugar = 'Q' .. valor['numeric-id']
		entidad = mw.wikibase.getEntityObject(idLugar)
		
		if not entidad then
			return
		end
		
		enlaceLugar   = elementoTabla(entidad,'sitelinks','eswiki','title')
		etiquetaLugar = elementoTabla(entidad,'labels','es','value')
		lugarEnlazado = enlazar(enlaceLugar, etiquetaLugar, idLugar, opciones)
		--
		-- Obtener el país del lugar.
		--
		local paisesLugar = elementoTabla(entidad,'claims','P37')
		
		if paisesLugar then
			-- Primero se intenta con el país en la fecha de las opciones, luego
			-- el país con rango máximo (el actual) y luego el primer país.
			local ocurrenciaPais = obtenerOcurrenciaAFecha(paisesLugar, fecha) or
			obtenerOcurrenciaRangoPreferente(paisesLugar) or 
			1

			enlacePais, etiquetaPais, idPais = obtenerDatos(elementoTabla(paisesLugar,ocurrenciaPais,'mainsnak','datavalue','value'))
			paisEnlazado  = enlazar(enlacePais, etiquetaPais, idPais)
		end
	end
	
	if idLugar == idPais then -- Si el lugar es un país, por ejemplo, estados Unidos, en Wikidata tiene la propiedad país informada con Estados Unidos.
		return lugarEnlazado
	elseif lugarEnlazado and entidadTerritorialAdministrativaEnlazada and paisEnlazado then
		return lugarEnlazado .. ' (' .. entidadTerritorialAdministrativaEnlazada ..  ', ' .. paisEnlazado .. ')'
	elseif lugarEnlazado and entidadTerritorialAdministrativaEnlazada then
		return lugarEnlazado .. ' (' .. entidadTerritorialAdministrativaEnlazada .. ')'
	elseif lugarEnlazado and paisEnlazado then
		return lugarEnlazado .. ' (' .. paisEnlazado .. ')'		
	elseif entidadTerritorialAdministrativaEnlazada and paisEnlazado then
		return entidadTerritorialAdministrativaEnlazada .. ' (' .. paisEnlazado .. ')'	
	else
		return lugarEnlazado or entidadTerritorialAdministrativaEnlazada or paisEnlazado	
	end
end

--*****************************************************************************
-- Alias de formatos para utilizar en la plantilla propiedad
--*****************************************************************************
p['lugar']     = p['formatoLugar']
	
return p
Obtenido de «https://es.bahaipedia.org/index.php?title=Módulo:Wikidata/Formato_lugar&oldid=2439»
Categoría:
  • Wikidata
Esta página se editó por última vez el 31 dic 2023 a las 12:33.
El contenido está disponible bajo la licencia Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License a menos que se indique lo contrario.
Política de privacidad
Acerca de Bahaipedia
Descargos
Powered by MediaWiki