Модуль:PopulationWikidata
Внешний вид
Модуль для получения актуальной численности населения из Викиданных.
Из getBestStatements (все значения с предпочтительным рангом при их наличии, если их нет — все с нормальным рангом) выбирается значение с наиболее актуальным годом.
Значения без указанной даты игнорируются.
local p = {}
function p.population(frame)
local entity = ''
if frame.args["id"] and frame.args["id"] ~= '' then
entity = mw.wikibase.getEntityObject(frame.args["id"])
else
entity = mw.wikibase.getEntityObject()
end
local populationStatements = entity:getBestStatements('P1082')
if populationStatements then
local bestYear = nil
local bestPopulation = nil
for a, statement in ipairs(populationStatements) do
if statement.qualifiers and statement.qualifiers.P585 then
for b, qualifier in ipairs(statement.qualifiers.P585) do
local year = qualifier.datavalue.value.time:match('^(%+?%-?%d+)')
year = tonumber(year)
if year and (bestYear == nil or year > bestYear) then
bestYear = year
bestPopulation = statement.mainsnak
end
end
end
end
if bestPopulation then
return mw.wikibase.renderSnak(bestPopulation) .. ' чел. ('.. bestYear .. ')'
else
return ''
end
else
return ''
end
end
return p;