Uso

En este módulo se definen algunos de los tipos de datos de la plantilla {{propiedad}} o equivalentemente de las funciones permitidas para el parámetro valor-función del módulo:Wikidata.

bandera

uso desde la plantilla propiedad
{{Propiedad|id. de la propiedad|tipo de dato=bandera|parámetros opcionales}}

Tipo de dato para la propiedad «país (P17)». Se muestra la bandera del país y a su derecha el nombre. Para ello se utiliza la plantilla {{bandera2}}.

Pueden verse ejemplos de utilización en la página de pruebas del módulo.

nacionalidad


local p={}

local moduloTablas = require('Módulo:Tablas')
local	elementoTabla = moduloTablas.elemento
local	agruparTabla  = moduloTablas.agrupar
local	ordenarTabla  = moduloTablas.ordenar
local moduloWikidata  = require('Módulo:Wikidata')
local   formatoLista         = moduloWikidata.formatoLista
local moduloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local	enlazar              = moduloWikidataFormatos.enlazar
local   formatoPeriodo       = moduloWikidataFormatos.formatoPeriodo
local obtenerDatos           = moduloWikidataFormatos.obtenerDatos

local paises = mw.loadData('Módulo:Wikidata/Formatos_país/datos')

function p.pruebas(frame)
	--[[
	--local entidad
	local nacionalidad
	
	for k,v in pairs(paises) do
		if not v.etiqueta then
			--entidad   = mw.wikibase.getEntityObject(k) or {}
			--v.etiqueta = require('Módulo:Tablas').elemento(entidad,'labels', 'es', 'value')
			v.etiqueta = mw.wikibase.getLabel(k)
		end
		if not v.enlace then
			v.enlace = mw.wikibase.getSitelink(k)
		end			
		if v.etiqueta and not v.nacionalidad then
			nacionalidad = frame:preprocess('{{gentilicio|'.. v.etiqueta .. '|fs}}')
			
			if nacionalidad and nacionalidad~= '' then
				v.nacionalidad = nacionalidad
			end
		end
    end	
	return require('Módulo:Tablas').tostringordered(paises)
    --]]
end

function p.formatoNacionalidad(claim, opciones)
	if not claim then
		return
	end
	local tabla_nacionalidades={}
	local idPais
	local pais
	
	--if true then return require('Módulo:Tablas').tostring(claim) end
	for k, v in ipairs(claim) do
		idPais = elementoTabla(v,'mainsnak','datavalue','value','id')
		if idPais then
			pais = paises[idPais] or {}
			-- falta saltarse los paises sin nacionalidad
			if pais.nacionalidad then
				table.insert(
					tabla_nacionalidades, 
					{
						['nacionalidad'] = pais.nacionalidad,
						['datos'] = {
							['idPais']		  = idPais,
							['etiquetaPais']  = pais.etiqueta,
							['enlacePais']	  = pais.enlace,
							['periodo']	      = formatoPeriodo(v.qualifiers)				
						},
						['fecha']	      = elementoTabla(v,'qualifiers','P585',1,'datavalue','value','time'),
						['fechaCreacion'] = elementoTabla(v,'qualifiers','P571',1,'datavalue','value','time'),
						['fechaInicio']	  = elementoTabla(v,'qualifiers','P580',1,'datavalue','value','time'),
						['fechaFin']	  = elementoTabla(v,'qualifiers','P582',1,'datavalue','value','time')	
					}
				)
			end
		elseif elementoTabla(v,'mainsnak','snaktype') == 'novalue' then
			if  elementoTabla(v,'qualifiers','P805',1,'datavalue','value','id') == 'Q223050' then
				table.insert(
					tabla_nacionalidades, 
					{
						['nacionalidad'] = 'apátrida',
						['datos'] = {
							['periodo']	     = formatoPeriodo(v.qualifiers)
						},
						['fecha']	      = elementoTabla(v,'qualifiers','P585',1,'datavalue','value','time'),
						['fechaCreacion'] = elementoTabla(v,'qualifiers','P571',1,'datavalue','value','time'),
						['fechaInicio']	  = elementoTabla(v,'qualifiers','P580',1,'datavalue','value','time'),
						['fechaFin']	  = elementoTabla(v,'qualifiers','P582',1,'datavalue','value','time')
					}
				)				
			else
				table.insert(
					tabla_nacionalidades, 
					{
						['nacionalidad'] = 'sin nacionalidad',
						['datos'] = {
							['periodo']	     = formatoPeriodo(v.qualifiers)
						},
						['fecha']	      = elementoTabla(v,'qualifiers','P585',1,'datavalue','value','time'),
						['fechaCreacion'] = elementoTabla(v,'qualifiers','P571',1,'datavalue','value','time'),
						['fechaInicio']	  = elementoTabla(v,'qualifiers','P580',1,'datavalue','value','time'),
						['fechaFin']	  = elementoTabla(v,'qualifiers','P582',1,'datavalue','value','time')
					}
				)
			end
		end
	end
	
	ordenarTabla(tabla_nacionalidades, {'nacionalidad', 'fechaInicio', 'fechaFin'})
	tabla_nacionalidades = agruparTabla(tabla_nacionalidades, 'nacionalidad', 'datos')
	--if true then return require('Módulo:Tablas').tostring(tabla_nacionalidades) end	
	ordenarTabla(tabla_nacionalidades, {'fechaInicio', 'fechaFin'})
	--tabla_nacionalidades = agruparTabla(tabla_nacionalidades, 'nacionalidad', 'datos')
	--if true then return require('Módulo:Tablas').tostring(tabla_nacionalidades) end
	
	local nacionalidades = {}
	local tabla_periodos
	local nacionalidad
	local periodos
	
	for k,v in ipairs(tabla_nacionalidades) do
		tabla_periodos = {}
		if v.datos[2] then
			nacionalidad = v.nacionalidad
			
			if opciones['formatoTexto'] and mw.ustring.find(opciones['formatoTexto'],'mayúscula', plain ) and k == 1 then
				nacionalidad = mw.language.new('es'):ucfirst(nacionalidad)			
			end
			
			-- Comprobar si están informados todos los periodos. Si no es así no se pondrán entre paréntesis
			-- Por ejemplo William Wordsworth que en Wikidata tiene como país de 
			-- nacionalidad Reino Unido de Gran Bretaña e Irlanda sin fechas de 
			-- inicio o de fin y Reino de Gran Bretaña con fecha de fin 1 ene 1801.
			-- Se devolverá como nacionalidad solo "Británica".
			local wpaisSinPeriodo
			for k2,v2 in ipairs(v.datos) do
				if not v2.periodo then
					wpaisSinPeriodo = true
				end
			end
			
			if not wpaisSinPeriodo then
				for k2,v2 in ipairs(v.datos) do
					table.insert(tabla_periodos, enlazar(v2.enlacePais, v2.periodo, v2.idPais))
				end
				
				periodos = table.concat(tabla_periodos,', ')				
			end	
			--if true then return require('Módulo:Tablas').tostring(tabla_periodos) end
		else
			if opciones['formatoTexto'] and mw.ustring.find(opciones['formatoTexto'],'mayúscula', plain ) and k == 1 then
				opciones['mayúscula'] = 'sí'
			else
				opciones['mayúscula'] = 'no'
			end
			nacionalidad = enlazar(v.datos[1].enlacePais, v.nacionalidad, v.datos[1].idPais, opciones)
			periodos = v.datos[1].periodo
		end
		
		if periodos and periodos ~= '' then
			nacionalidad = nacionalidad .. '&nbsp;<small>(' .. periodos .. ')</small>'
		end
		table.insert(nacionalidades, nacionalidad)
	end
	
	return formatoLista(nacionalidades, opciones)
	--return require('Módulo:Tablas').tostring(nacionalidades)
end

function p._nacionalidad(frame)
	local args    = frame.args
	
	--if true then return require('Módulo:Tablas').tostring(frame.args) end
	local claim = mw.wikibase.getAllStatements(args.entityId or args.id,'P27')
	
	if not claim then
		return
	end
	
	opciones={}
	opciones.propiedad    = 'P27'
	opciones.entityId     = args.entityId or args.id,'P27'
	opciones.linkback     = args.linkback
	opciones.formatoTexto = args.formatoTexto
	opciones.enlace       = args.enlace
	
	return p.formatoNacionalidad(claim, opciones)
end

function p.formatoBandera(valor, opciones, frame)
	if not valor then
		return
	end

	local enlace, etiqueta, id = obtenerDatos(valor)	
    
    if not etiqueta then 
    	return
    elseif mw.title.new('Plantilla:Geodatos '.. etiqueta ).exists  then
        return frame:preprocess('{{bandera2|' .. etiqueta ..  '}}')
    else
    	return enlazar(enlace, etiqueta, id, opciones)
    end
end

-- Alias para simplificar el uso desde la plantilla propiedad
--
p['bandera'] 		= p.formatoBandera
p['nacionalidad'] 	= p.formatoNacionalidad

return p
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy