Módulo:Wikidata/Formatos país
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
<section begin=Wikidata_bandera_texto />
- uso desde la plantilla propiedad
{{Propiedad|id. de la propiedad|tipo de dato=bandera|parámetros opcionales}}
Tipo de dato para la propiedad «Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129". (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.<section end=Wikidata_bandera_texto />
nacionalidad
Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129".
Error de secuencia de órdenes: Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129".
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 .. ' <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