Inicio
Al azar
Acceder
Configuración
Acerca de Wiki TVenserio
Descargos
Wiki TVenserio
Buscar
Edición de «
Módulo:Wikidata/Formato lugar
»
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Parece que ya se había deshecho la edición.
Comprobación antispam. ¡
No
rellenes esto!
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,'P17',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','P17') 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
Resumen:
Ten en cuenta que todas las contribuciones a Wiki TVenserio pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase
Wiki TVenserio:Derechos de autor
para más detalles).
¡No uses textos con copyright sin permiso!
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Plantilla usada en esta página:
Módulo:Wikidata/Formato lugar/doc
(
editar
)