Modul:Wikidata utilities: Unterschied zwischen den Versionen

analyzeDatavalue modifiziert; +wu.isGregorian( t ); +wu.getDateFromTime( t )
(+references)
(analyzeDatavalue modifiziert; +wu.isGregorian( t ); +wu.getDateFromTime( t ))
Zeile 4: Zeile 4:
local WikidataUtilities = {
local WikidataUtilities = {
suite  = 'WikidataUtilities',
suite  = 'WikidataUtilities',
serial = '2020-10-10',
serial = '2020-10-11',
item  = 65439025
item  = 65439025
}
}
Zeile 10: Zeile 10:
-- i18n
-- i18n
local wd = {
local wd = {
version = 'P348'
version = 'P348',
Gregorian = 'Q12138', -- calendar models
prolepticGregorian = 'Q1985727'
}
}


Zeile 95: Zeile 97:
return ''
return ''
end
end
end
-- is calendar model a Gregorian calendar?
function wu.isGregorian( t )
return type( t ) == 'string' or t.calendarmodel == wd.Gregorian
or t.calendarmodel == wd.prolepticGregorian
end
-- extract date from time
function wu.getDateFromTime( t )
local model = wd.prolepticGregorian
if type( t ) == 'table' then
model = t.calendarmodel
t = t.time
end
t = t:gsub( '^+', '' ):gsub( 'T.+Z$', '' ):gsub( '-00$', '' )
:gsub( '-00$', '' )
return t, model
end
end


Zeile 251: Zeile 271:
end
end
elseif t == 'quantity' then
elseif t == 'quantity' then
v.amount = v.amount:gsub( '^+', '' )
if tonumber( v.amount ) == 0 then
v.amount = '0'
end
if v.unit == '1' then
if v.unit == '1' then
v = tonumber( v.amount ) or 1
v = tonumber( v.amount ) or 1
else
v.unit = wu.getUnit( v.unit )
end
end
elseif t == 'time' then
elseif t == 'time' then
v = v.time
v.calendarmodel = wu.getUnit( v.calendarmodel )
if wu.isGregorian( v ) then
v = v.time
end
end
end
end
end
Zeile 262: Zeile 291:


-- The following function is an experimental one, not for extensive use
-- The following function is an experimental one, not for extensive use
-- for qualifiers, references
--  { item1, item2, ... } : using named qualifiers/references
--  {} : using no qualifiers/references
--  nil : using all qualifiers/references
function wu.getValuesWithQualifiers( entity, p, qualifiers, references, count,
function wu.getValuesWithQualifiers( entity, p, qualifiers, references, count,
labelFct, ... )
labelFct, ... )
Anonymer Benutzer