Módulo:Wikidata/Data
[ máis información | ver o historial | | | ver as instrucións ]
Obxectivo
editarSubmódulo de Módulo:Wikidata
[ máis información | ver o historial | | | ver as instrucións ]
Esta documentación está transcluída desde Módulo:Wikidata/Data/uso. Os editores poden probar cambios no mesmo en Módulo:Wikidata/Data/probas.
Por favor, engade as categorías na subpáxina de documentación e os interwikis no Wikidata. Ver as subpáxinas deste módulo.
Por favor, engade as categorías na subpáxina de documentación e os interwikis no Wikidata. Ver as subpáxinas deste módulo.
local p = {}
local Datas = require( 'Módulo:Datas')
local Romanos = require('Módulo:Números').Romano
local enlace
local function enlazar(etiqueta)
if enlace == 'no' then
return etiqueta
else
return '[['.. etiqueta ..']]'
end
end
function formatear(fechahora, opciones)
local etiqueta = fechahora.label
local timestamp = fechahora.time
local precision = fechahora.precision
-- Decodificar o timestamp.
--if true then return timestamp end
local signo, annoSinSigno, mes, dia = timestamp:match("(%W)(%d+)%-(%d+)%-(%d+)")
annoSinSigno = tonumber(annoSinSigno)
-- Obter a era
local era = ''
if signo == '-' then
era = ' a. C.'
annoConSigno = - annoSinSigno
elseif annoSinSigno == 0 then -- Por comprobar se é así.
annoSinSigno = 1
annoConSigno = -1
era = ' a. C.'
else
annoConSigno = annoSinSigno
end
-- Informar o calendario
local calendario
local mostrarCalendario = ''
if fechahora.calendarmodel == 'http://www.wikidata.org/entity/Q1985786' then
calendario = 'juliano'
mostrarCalendario = '<sup>xuliano</sup>'
else
calendario = 'gregoriano'
end
-- Informar a ligazón utilizado na función ligar. OLLO: Non debe definirse como local
enlace = opciones.enlace
if precision == 11 then -- Data da que se coñece o ano, o mes e o día
if opciones['formatoFecha'] == 'año' then
return enlazar(annoSinSigno) .. mostrarCalendario .. era -- Devolver só o ano
else
return Datas.Data({dia,mes,annoConSigno;enlace=opciones.enlace;calendario=calendario;['mayúscula']=opciones['mayúscula']})
end
elseif precision == 10 then -- Data da que se coñece o ano e o mes
if opciones['formatoFecha'] == 'año' then
return enlazar(annoSinSigno) .. mostrarCalendario .. era -- Devolver só o ano
else
return Datas.Data({'',mes,annoConSigno;enlace=opciones.enlace;calendario=calendario;['mayúscula']=opciones['mayúscula']})
end
elseif precision == 9 then -- Data da que se coñece o ano
return Datas.Data({'','',annoConSigno;enlace=opciones.enlace;calendario=calendario;['mayúscula']=opciones['mayúscula']})
elseif precision == 8 then -- Data da que se coñece a década
local decada = math.floor(annoSinSigno/10)*10
return enlazar('anos '.. decada .. era) .. mostrarCalendario
elseif precision == 7 then -- Data da que se coñece o século
--Exemplos:
-- Eleno de Céspedes +1600-00-00T00:00:00Z --> século XVI
--
local siglo = Romanos(math.floor(annoSinSigno/100))
if opciones['mayúscula'] == 'sí' then
return enlazar('Século ' .. siglo .. era) .. mostrarCalendario
else
return enlazar('século ' .. siglo .. era) .. mostrarCalendario
end
elseif precision == 6 then -- Data da que se coñece o milenio
local milenio = Romanos(math.floor(annoSinSigno/1000))
return enlazar(milenio .. ' milenio'.. era).. mostrarCalendario
elseif precision == 5 then -- Data da que se coñece 10 000 anos
local milenio = Romanos(math.floor(annoSinSigno/1000))
return enlazar(milenio .. ' milenio'.. era)
elseif precision == 4 then -- Data da que se coñece 100 000 anos
local milenio = Romanos(math.floor(annoSinSigno/1000))
return enlazar(milenio.. ' milenio'.. era)
elseif precision == 3 then -- Data da que se coñecen os millóns de anos
return math.floor(annoSinSigno/1000000) .. ' millóns de anos' .. era
elseif precision == 2 then -- Data da que se coñecen os 10 millóns de anos
return math.floor(annoSinSigno/1000000) .. ' millóns de anos' .. era
elseif precision == 1 then -- Data da que se coñecen os 100 millóns de anos
return math.floor(annoSinSigno/1000000) .. ' millóns de anos' .. era
else
return "<span class=error>Tipo de dato descoñecido.</span>"
end
end
function p.FormateaFechaHora(fechahora, opciones, calificativos)
local idCircunstancia
if calificativos and
calificativos["P1480"] and -- circunstancias da referenza
calificativos["P1480"][1] and
calificativos["P1480"][1]['datavalue'] and
calificativos["P1480"][1]['datavalue']['value'] then
idCircunstancia = calificativos["P1480"][1]['datavalue']['value']['numeric-id']
if idCircunstancia == 5727902 then -- circa
return '[[circa|c.]] ' .. formatear(fechahora, opciones)
end
end
-- Valor por defecto se non se soubo formatear usando o cualificativo
return formatear(fechahora, opciones)
end
return p