Moduuli:Wd
Siirry navigaatioon
Siirry hakuun
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:Wd/ohje
-- Ajatuksena apumoduuli Wikidatasta tietojen noutamiseen
-- Tällä hetkellä tuettuna asuakasluvun näyttäminen
-- Population: P1082
-- Qualifier point in time P585
local p = {}
function p.population( frame )
local fallbackValue = frame.args[1] or ""
local entity = mw.wikibase.getEntityObject()
if entity == nil or entity.claims == nil then
return fallbackValue
end
if entity.claims.P1082 == nil then
return fallbackValue
end
local population = entity.claims.P1082[1]
if population == nil then
return fallbackValue
end
if population.qualifiers == nil then
return fallbackValue
end
-- got value
local populationvalue = population.mainsnak.datavalue.value
-- Check if there is set point in time qualifier. IF not return just population
if population.qualifiers.P585[1] == nil then
return formatPositiveInteger(populationvalue.amount)
end
-- Ok, point in time qualifier exists, let's return smthng like 32 000 (1.1.2013)
local pointInTime = population.qualifiers.P585[1].datavalue.value
return formatPositiveInteger(populationvalue.amount) .. " (" .. formatDate(pointInTime.time) .. ")"
end
function formatPositiveInteger(int)
numberStr = tostring(int)
-- strip the plus sign
numberStr = string.gsub(numberStr, "\+", "")
-- separate thousands with space
return numberStr:reverse():gsub("%d%d%d", "%1 "):reverse():gsub("^,", "")
end
function formatDate(date)
-- +00000002013-01-01T00:00:00Z -> 1.1.2013
local dt = {}
dt.year = string.sub(date, 2, 5)
dt.month = string.sub(date, 7, 8)
dt.day = string.sub(date, 10 , 11)
return string.format("%d.%d.%d", dt.day, dt.month, dt.year)
end
-- suamennoksia
p.asukasluku = p.population
return p