Modul:WikidataUtils/Time/Interval
Aspect

Implementează {{Interval de timp de la Wikidata}}
local Wikidata = require('Modul:Wikidata')
local getArgs = require('Modul:Arguments').getArgs
local DateUtils = require('Modul:DateUtils')
local p = {}
local endash = mw.text.decode('–')
local printDateFromSnak = function(snak, dateFormat)
return DateUtils.formatDate(DateUtils.extractDateFromWikidataSnak(snak), false, false, dateFormat)
end
p.fromArgs = function(property, q, startProp, endProp, instantProp, dateFormat)
local start = {prop = startProp}
local endd = {prop = endProp}
local instant = {prop = instantProp}
local moments = {start, endd, instant}
if property then
local claims = Wikidata.findBestClaimsForProperty(q, property)
if claims then
for _,eachClaim in ipairs(claims) do
if Wikidata.isClaimTrue(eachClaim) then
if eachClaim.qualifiers then
for __,eachMoment in ipairs(moments) do
if eachClaim.qualifiers[eachMoment.prop] then for ___,eachQual in ipairs(eachClaim.qualifiers[eachMoment.prop]) do
if Wikidata.isValueSnak(eachQual) then
mw.logObject(eachQual, '[WU/T/I] found qual for prop ')
eachMoment.snak = eachQual
break
end
end end
end
end
break
end
end
end
else
for _,eachMoment in ipairs(moments) do
local momentClaims = Wikidata.findBestClaimsForProperty(q, eachMoment.prop)
if momentClaims then for _,eachMomentClaim in ipairs(momentClaims) do
if Wikidata.hasValueSnak(eachMomentClaim) and Wikidata.isClaimTrue(eachMomentClaim) then
eachMoment.snak = eachMomentClaim.mainsnak
end
end end
end
end
--mw.logObject(moments, '[WU/T/I] moments')
if start.snak and endd.snak then
return printDateFromSnak(start.snak, dateFormat) .. endash .. printDateFromSnak(endd.snak, dateFormat)
elseif start.snak then
return printDateFromSnak(start.snak, dateFormat) .. endash .. "''prezent''"
elseif endd.snak then
return 'până la ' .. printDateFromSnak(endd.snak, dateFormat)
elseif instant.snak then
return printDateFromSnak(instant.snak, dateFormat)
end
return nil
end
p.fromArray = function(array)
local q = array.q or mw.wikibase.getEntityIdForCurrentPage()
local property = array.p
local startProp = array[1] or 'P580'
local endProp = array[2] or 'P582'
local instantProp = array[3] or 'P585'
local dateFormat = array.dateFormat
return p.fromArgs(property, q, startProp, endProp, instantProp, dateFormat)
end
p.fromFrame = function(frame)
local args = getArgs(frame)
return p.fromArray(args)
end
return p