La documentación para este módulo puede ser creada en Módulo:Wikidata/Formatos país/doc

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