Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Wiki TVenserio
Buscar
Buscar
Crear una cuenta
Acceder
Herramientas personales
Modo oscuro
Crear una cuenta
Acceder
Páginas para editores desconectados
más información
Contribuciones
Discusión
Edición de «
Módulo:Wikidata/Formato lugar
»
Módulo
Discusión
English
Leer
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Páginas especiales
Información de la página
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.
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
)
Activar o desactivar el límite de anchura del contenido