Módulo:Wikidata/Formatos país
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 entidat
local nacionalidat
for k,v in pairs(paises) do
if not v.etiqueta then
--entidat = mw.wikibase.getEntityObject(k) or {}
--v.etiqueta = require('Módulo:Tablas').elemento(entidat,'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.nacionalidat then
nacionalidat = frame:preprocess('{{chentilicio|'.. v.etiqueta .. '|fs}}')
if nacionalidat and nacionalidat~= '' then
v.nacionalidat = nacionalidat
end
end
end
return require('Módulo:Tablas').tostringordered(paises)
end
function p.formatoNacionalidat(claim, opcions)
if not claim then
return
end
local tabla_nacionalidatz={}
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 {}
-- manca blincar os paises sin de nacionalidat
if pais.nacionalidat then
table.insert(
tabla_nacionalidatz,
{
['nacionalidat'] = pais.nacionalidat,
['datos'] = {
['idPais'] = idPais,
['etiquetaPais'] = pais.etiqueta,
['enlacePais'] = pais.enlace,
['periodo'] = formatoPeriodo(v.qualifiers)
},
['calendata'] = elementoTabla(v,'qualifiers','P585',1,'datavalue','value','time'),
['calendataCreyacion'] = elementoTabla(v,'qualifiers','P571',1,'datavalue','value','time'),
['calendataInicio'] = elementoTabla(v,'qualifiers','P580',1,'datavalue','value','time'),
['calendataFin'] = 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_nacionalidatz,
{
['nacionalidat'] = 'apatrida',
['datos'] = {
['periodo'] = formatoPeriodo(v.qualifiers)
},
['calendata'] = elementoTabla(v,'qualifiers','P585',1,'datavalue','value','time'),
['calendataCreyacion'] = elementoTabla(v,'qualifiers','P571',1,'datavalue','value','time'),
['calendataInicio'] = elementoTabla(v,'qualifiers','P580',1,'datavalue','value','time'),
['calendataFin'] = elementoTabla(v,'qualifiers','P582',1,'datavalue','value','time')
}
)
else
table.insert(
tabla_nacionalidatz,
{
['nacionalidat'] = 'sin de nacionalidat',
['datos'] = {
['periodo'] = formatoPeriodo(v.qualifiers)
},
['calendata'] = elementoTabla(v,'qualifiers','P585',1,'datavalue','value','time'),
['calendataCreyacion'] = elementoTabla(v,'qualifiers','P571',1,'datavalue','value','time'),
['calendataInicio'] = elementoTabla(v,'qualifiers','P580',1,'datavalue','value','time'),
['calendataFin'] = elementoTabla(v,'qualifiers','P582',1,'datavalue','value','time')
}
)
end
end
end
ordenarTabla(tabla_nacionalidatz, {'nacionalidat', 'calendataInicio', 'calendataFin'})
tabla_nacionalidatz = agruparTabla(tabla_nacionalidatz, 'nacionalidat', 'datos')
--if true then return require('Módulo:Tablas').tostring(tabla_nacionalidatz) end
ordenarTabla(tabla_nacionalidatz, {'calendataInicio', 'calendataFin'})
--tabla_nacionalidatz = agruparTabla(tabla_nacionalidatz, 'nacionalidat', 'datos')
--if true then return require('Módulo:Tablas').tostring(tabla_nacionalidatz) end
local nacionalidatz = {}
local tabla_periodos
local nacionalidat
local periodos
for k,v in ipairs(tabla_nacionalidatz) do
tabla_periodos = {}
if v.datos[2] then
nacionalidat = v.nacionalidat
if opcions['formatoTexto'] and mw.ustring.find(opcions['formatoTexto'],'mayúscla', plain ) and k == 1 then
nacionalidat = mw.language.new('an'):ucfirst(nacionalidat)
end
-- Comprobar si son informaus totz os periodos. Si no ye asinas no se meterán entre parentesi
-- Por eixemplo William Wordsworth que en Wikidata tien como país de
-- nacionalidat Reino Uniu de Gran Bretanya y Irlanda sin calendats
-- d'inicio u de fin y Reino de Gran Bretanya con calendata de fin 1 chi 1801.
-- Se tornará como nacionalidat nomás "Britanica".
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 opcions['formatoTexto'] and mw.ustring.find(opcions['formatoTexto'],'mayúscla', plain ) and k == 1 then
opcions['mayúscla'] = 'sí'
else
opcions['mayúscla'] = 'no'
end
nacionalidat = enlazar(v.datos[1].enlacePais, v.nacionalidat, v.datos[1].idPais, opcions)
periodos = v.datos[1].periodo
end
if periodos and periodos ~= '' then
nacionalidat = nacionalidat .. ' <small>(' .. periodos .. ')</small>'
end
table.insert(nacionalidatz, nacionalidat)
end
return formatoLista(nacionalidatz, opcions)
--return require('Módulo:Tablas').tostring(nacionalidatz)
end
function p._nacionalidat(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
opcions={}
opcions.propiedat = 'P27'
opcions.entityId = args.entityId or args.id,'P27'
opcions.linkback = args.linkback
opcions.formatoTexto = args.formatoTexto
opcions.enlace = args.enlace
return p.formatoNacionalidat(claim, opcions)
end
function p.formatoBandera(valor, opcions, 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, opcions)
end
end
-- Alias pa simplificar l'uso dende a plantilla propiedat
--
p['bandera'] = p.formatoBandera
p['nacionalidat'] = p.formatoNacionalidat
return p