Module:Sandbox/Innesw/test
---------------- Defining variables--------------------
local Pop_P = "P1082" -- population property
local Applies_P = "P518" -- applies to part property
local Pointin_P = "P585" -- point in time property
local DetMeth_P = "P459" -- determination method property
local RefURL_P = "P854" -- reference URL
local RefTitle_P = "P1476" -- reference title
local RefPubIn_P = "P1433" -- reference published in property
local DatePub_P = "P577" -- date of publication property
local Publisher_P = "P123" -- publisher property
local Retrieved_P = "P813" -- retrieved property
local Instof_P = "P31" -- instance of property
local ShortN_P = "P1813" -- short name property
local CensusGEN_I = "Q39825" -- census item (general)
local CensusAU_I = "Q5058971" -- Australian census item
local SAL_I = "Q33112019" -- state suburb item (includes SSC and SAL)
--local GCCSA_I = "Q112762887" -- Greater Capital City Statistical Area item
local LGA_I = "Q33127844" -- Local Government Area item
local UCL_I = "Q33127891" -- Urban Centre or Locality
--local SA2_I = "Q33128776" -- SA2
--local SA3_I = "Q118313924" -- SA3
--local SA4_I = "" -- SA4 - most suitable for type=region, but no SA4 Wikidata item is defined
local ILOC_I = "Q112729549" -- Indigenous Location
local item = nil
local p = {}
--------------- Function LastURLSection returns last section of a url, ie: the text after the last '/' ----------------------
local function LastURLSection(url)
local pos = 1
local f
while true do
f = string.find(url, '/', pos, true)
if (f == nil) then
break
else
pos = f + 1
end
end
return string.sub(url, pos)
end
--------------- Function SplitDoubleClaims returns the claims table with any claim with multiple points-in-time split into multiple claims. ----------------------
local function SplitDoubleClaims(claims)
local oldclaims, newclaims = {}, {}
for j, s in pairs(claims) do
local npits = table.maxn(s.qualifiers[Pointin_P])
if npits > 1 then
local newc = {}
-- for each point-in-time
for a, pit in pairs(s.qualifiers[Pointin_P]) do
local c = mw.clone(s) -- a copy of the complete claim
c.pitLabel = pit.datavalue.value.time -- label the claim with the time of the point-in-time qualifier
table.insert(newc, c) -- add the labelled claim to newc
end
for k, v in pairs(newc) do
table.insert(newclaims, mw.clone(v))
end
table.insert(oldclaims, j)
end
end
-- remove the original splitable claims
for k, v in pairs(oldclaims) do
table.remove(claims, v)
end
-- and add the separate ones they were split into
for k, v in pairs(newclaims) do
table.insert(claims, v)
end
end
--------------- Function IdForGeog returns the wikidata item ID for the specified geography abbreviation. Returns nil if abbreviation is blank. ----------------------
local function IdForGeog(geog)
if geog == "ucl" then
return UCL_I
elseif geog == "sal" then
return SAL_I -- includes SSC and SAL
elseif geog == "lga" then
return LGA_I
elseif geog == "iloc" then
return ILOC_I
end
return nil
end
--------------- Function GeogIdsForType returns a table of geography IDs that could be shown for the specified type. ----------------------
local function GeogIdsForType(type)
type = string.lower(type)
if type == "city" then
return {UCL_I}
elseif type == "town" then
return {UCL_I, SAL_I, ILOC_I}
elseif type == "locality" then
return {SAL_I, ILOC_I}
elseif type == "suburb" then
return {SAL_I}
elseif type == "settlement" then
return {SAL_I, ILOC_I}
elseif type == "lga" then
return {LGA_I}
elseif type == "region" then -- SA4 would be most suitable for type=region, but no SA4 Wikidata item is defined
return {}
end
end
--------------- Function GetRefsForClaim to check, collate and format all the reference components ----------------------
local function GetRefsForClaim(claim, defaulttitle)
local refs = ""
local r = 0
for b, x in pairs(claim.references) do -- loop through all references in a claim
local year
if claim.pitLabel then
year = string.sub(claim.pitLabel, 2, 5) -- extract the year from the point-in-time label
else
year = string.sub(claim.qualifiers[Pointin_P][1].datavalue.value.time, 2, 5) -- extract the year from the claim's only point in time
end
if (not claim.pitLabel)
or (x.snaks[RefURL_P] ~= nil and string.find(x.snaks[RefURL_P][1].datavalue.value, year, 1, true) ~= nil) then
-- each reference in the wikidata will produce a citation reference for the claim
-- except if the claim is labelled with a single point-in-time, and the reference URL does not contain the year of that label
r = r + 1
-- gather various values for potential later use
local refurl = ""
if claim.references[b].snaks[RefURL_P] ~= nil then -- if reference has a reference url, use it
refurl = claim.references[b].snaks[RefURL_P][1].datavalue.value
end
local reftitle = defaulttitle -- default title is the Wikidata item title
if claim.references[b].snaks[RefTitle_P] ~= nil then -- if reference has a title, use it
reftitle = claim.references[b].snaks[RefTitle_P][1].datavalue.value.text
end
local detmet = mw.wikibase.getEntity(claim.qualifiers[DetMeth_P][1].datavalue.value.id) -- load the claim determination method item
local pubinlabel = ""
if claim.references[b].snaks[RefPubIn_P] ~= nil then -- if reference has a published in (it should for all references), use its item's label
local pubin = mw.wikibase.getEntity(claim.references[b].snaks[RefPubIn_P][1].datavalue.value.id)
pubinlabel = pubin.labels.en.value
end
local refwork = pubinlabel -- the default reference work for for non-census references, or fall-back for census references with missing parts
local pubdate = ""
if claim.references[b].snaks[DatePub_P] ~= nil then -- if reference has a date published, use it. This is the second-best option for the published date.
pubdate = mw.language.getContentLanguage():formatDate('j F Y', claim.references[b].snaks[DatePub_P][1].datavalue.value.time)
end
if detmet.claims[Instof_P] ~=nil and detmet.claims[Instof_P][1].mainsnak.datavalue.value.id == CensusAU_I then
-- if determination method is an instance of an australian census
refwork = detmet.labels.en.value .. " " .. pubinlabel -- reference work is determination method label + published in
if detmet.claims[DatePub_P] ~=nil then -- if determination method has a date published, use that as the date
pubdate = mw.language.getContentLanguage():formatDate('j F Y', detmet.claims[DatePub_P][1].mainsnak.datavalue.value.time)
end
end
local refpublisher = ""
if detmet.claims[Publisher_P] ~= nil then -- if determination method has a publisher, use its item's label
local publisheritem = mw.wikibase.getEntity(detmet.claims[Publisher_P][1].mainsnak.datavalue.value.id)
refpublisher = "[[" .. publisheritem.labels.en.value .. "]]"
end
local refaccessdate = ""
if claim.references[b].snaks[Retrieved_P] ~= nil then -- if reference has an access date, use it.
refaccessdate = mw.language.getContentLanguage():formatDate('j F Y', claim.references[b].snaks[Retrieved_P][1].datavalue.value.time)
end
local appliespart = mw.wikibase.getEntity(claim.qualifiers[Applies_P][1].datavalue.value.id).labels.en.value -- the label of the item of the applies to part of the claim
local reference
if (detmet.claims[Instof_P] ~=nil and detmet.claims[Instof_P][1].mainsnak.datavalue.value.id == CensusAU_I) or
(string.find(string.lower(refurl), 'abs.gov.au', 1, true)) then
-- determination method is an instance of an australian census, or the url is for the abs
refwork = detmet.labels.en.value .. " " .. pubinlabel -- reference work is determination method label + published in
-- the reference is built using the specific template for the census year, which ensures the link format is correct
local geogid = LastURLSection(refurl) -- the id for the specific ABS reference is easiest to get from the ref URL. It may be the only place it is available.
reference = mw.getCurrentFrame():expandTemplate{title = 'Census_' .. year .. '_AUS', args = {id = geogid, name = reftitle .. " (" .. appliespart .. ")", ["access-date"] = refaccessdate, quick = 'on'} }
else
-- use the provided reference url, and whatever other citation data is available
local citewebargs = {
url = refurl,
title = reftitle .. " (" .. appliespart .. ")" ,
date = pubdate,
work = refwork,
author = refpublisher, -- author is used to match existing population references
accessdate = refaccessdate
}
reference = mw.getCurrentFrame():expandTemplate{ title = 'cite web', args = citewebargs }
end
local wdeditpencil = mw.getCurrentFrame():expandTemplate{title = 'EditAtWikidata', args = {qid = item.id, pid = claim.id, nbsp = 1}} -- the Edit At Wikidata icon & link
reference = reference .. wdeditpencil
-- The name of the citation reference will be the same for each wikidata claim reference. This will allow references to the same data to be combined into a single citation reference.
local refname = refwork .. "_" .. year .. "_" .. appliespart .. "_" .. reftitle
if r > 1 then -- 2nd and later references in the same wikidata claim have their number appended, to keep them unique
refname = refname .. "_" .. r
end
refs = refs .. mw.getCurrentFrame():extensionTag{ name = 'ref', content = reference, args = { name = refname} } -- accumulate the citation references
end
end
return refs
end
--------------- Function GetAbbrLabel gets the population geography abbreviation ---------------
local function GetAbbrLabel(returnclaim)
local appliespartitem = mw.wikibase.getEntity(returnclaim.qualifiers[Applies_P][1].datavalue.value.id) -- load the applies to part item
local abbrelabel = appliespartitem.labels.en.value -- the fall back value for the geography label if no abbreviation (short name) value exists in Wikidata item
if appliespartitem.claims[ShortN_P] ~= nil then -- if a short name value exists, use it, with the full label as a tooltip
abbrelabel = mw.getCurrentFrame():expandTemplate{title = 'Abbr', args = {appliespartitem.claims[ShortN_P][1].mainsnak.datavalue.value.text, appliespartitem.labels.en.value } }
end
return '[[Australian Bureau of Statistics#' .. string.gsub(appliespartitem.labels.en.value, ' ', '_') .. '|' .. abbrelabel .. ']]'
end
--------------- Function GetYearLink gets the Wikipedia article link for the population year ---------------
local function GetYearLink(returnclaim)
local year
if returnclaim.pitLabel then
year = string.sub(returnclaim.pitLabel, 2, 5) -- extract the year from the point-in-time label
else
year = string.sub(returnclaim.qualifiers[Pointin_P][1].datavalue.value.time, 2, 5) -- extract the year from the claim's only point in time
end
local yearreturn = year -- if no links to Wikipedia articles describing population determination method exist, default is the unlinked year
local detmetitem
for k, v in pairs(returnclaim.qualifiers[DetMeth_P]) do
local detmet = mw.wikibase.getEntity(v.datavalue.value.id)
if string.find(detmet.labels.en.value, year, 1, true) ~= nil then
detmetitem = detmet
break -- the first determination method with the required year is used
end
end
if detmetitem then
if detmetitem.sitelinks ~=nil and detmetitem.sitelinks.enwiki ~=nil then -- if determination method item has an enwiki URL
yearreturn = "[[" .. detmetitem.sitelinks.enwiki.title .. "|" .. year .. "]]" -- use that URL as the link for the year value
elseif detmetitem.claims[Instof_P] ~=nil and detmetitem.claims[Instof_P][1].mainsnak.datavalue.value.id == CensusAU_I then -- if determination method is an instance of an australian census
yearreturn = "[[Census_in_Australia#" .. year .. "|" .. year .. "]]" -- use the section of the Census in Australia article as the link for the year value
end
end
return yearreturn
end
---------------- Function HistoricPopulations returns a wikitable of all census population values for all geography types, or a specified one ---------------
-- parameters:
-- required: type= the type value as for the Infobox
-- optional: wikidata= the wikidata item to be used instead of the one in the current page
-- optional: geog= a single geography type to return pop values for. Valid are 'ucl', 'sal', 'lga', 'iloc'. If left blank, all geographies will be returned.
-- optional: note1_year=, note1_text= the year, and the text of a note to appear in the table row for that year.
-- note2_year, note2_text etc. are allowed
function p.HistoricPopulations( frame )
if frame.args.wikidata ~= nil and frame.args.wikidata ~= "" then -- if there's a Wikidata item specified, use it
item = mw.wikibase.getEntity(frame.args.wikidata)
else
item = mw.wikibase.getEntity() -- if there's a Wikidata item connected to the article it will find it here.
end
-- if there are no population claims in the item, return an empty string
if not (item and item.claims and item.claims[Pop_P]) then
return ""
end
-- Find claims with:
-- (1) point in time is not nil
-- (2) applies to part is not nil
-- (3) determination method is not nil
-- (4) References table is not empty
-- (5) The determination method for the claim is an australian census
local validpopclaims = {}
local z = 0
for j, s in pairs(item.claims[Pop_P]) do
local isCensus = false
if s.qualifiers[DetMeth_P] ~= nil then
-- is determination method an instance of an australian census, or a (generic) census
local detmetitem = mw.wikibase.getEntity(s.qualifiers[DetMeth_P][1].datavalue.value.id) -- load the claim determination method item
isCensus = (detmetitem.claims[Instof_P] ~=nil and detmetitem.claims[Instof_P][1].mainsnak.datavalue.value.id == CensusAU_I) or
s.qualifiers[DetMeth_P][1].datavalue.value.id == CensusGEN_I
end
if s.qualifiers ~= nil and
s.qualifiers[Pointin_P] ~= nil and
s.qualifiers[Applies_P] ~= nil and
s.qualifiers[DetMeth_P] ~= nil and
s.references ~= nil and
isCensus then
z = z + 1
validpopclaims[z] = s -- add to valid claims table
end
end
-- if there are no valid claims, return an empty string
if #validpopclaims < 1 then
return ""
end
SplitDoubleClaims(validpopclaims) -- any claims with multiple points-in-time are split into separate claims
-- parse note parameters
local notes = {}
local nts = 0
while frame.args['note' .. (nts + 1) .. '_year'] and frame.args['note' ..(nts + 1) .. '_text'] do
nts = nts + 1
notes[frame.args['note' .. nts .. '_year']] = frame.args['note' .. nts .. '_text']
end
-- add to history table for all (or requested-geography-only) claims
local showGeogIds = {}
if frame.args.geog ~= nil and frame.args.geog ~= "" then -- if geog is specified, only claims for its id are returned
showGeogIds[1] = IdForGeog(string.lower(frame.args.geog))
else
showGeogIds = GeogIdsForType(frame.args.type)
end
local showGeogIdsString = ',' .. table.concat(showGeogIds, ',') .. ','
local geog = nil
if frame.args.geog ~= nil and frame.args.geog ~= "" then
geog = string.lower(frame.args.geog)
end
local oneplaceid = IdForGeog(geog)
local history = {}
local years = {}
local glist = {}
for i, q in pairs(validpopclaims) do
local claimgeogid = q.qualifiers[Applies_P][1].datavalue.value.id -- the ID of the applies_to_part item in the claim
if string.find(showGeogIdsString, ',' .. claimgeogid .. ',', 1, true) then -- the geography ID of the claim is in the list of IDs that could be shown for the type
if (not oneplaceid) or (claimgeogid == oneplaceid) then -- if geog is not specified, or it is and the claim applies_to_part matches it
local claimdate
if q.pitLabel then
claimdate = q.pitLabel
else
claimdate = q.qualifiers[Pointin_P][1].datavalue.value.time
end
local claimyear = string.sub(claimdate, 2, 5) -- the population point in time as a year string
if not history[claimyear] then
history[claimyear] = {year = claimyear, claim = {}}
table.insert(years, claimyear)
end
local refs = GetRefsForClaim(q, item.labels.en.value)
history[claimyear].claim[claimgeogid] = mw.language.getContentLanguage():formatNum(tonumber(q.mainsnak.datavalue.value.amount)) .. refs
glist[claimgeogid] = 1
end
end
end
-- sort the years table
table.sort(years)
local geogNames = {[UCL_I] = 'UCL', [SAL_I] = 'SAL', [ILOC_I] = 'ILOC', [LGA_I] = 'LGA'}
-- build the wikidata table contents from the history table
-- heading row
local wt = {}
for g, l in pairs(showGeogIds) do
if glist[l] then
table.insert(wt, ' !! ' .. geogNames[l])
end
end
if nts > 0 then
table.insert(wt, ' !! ' .. 'Notes')
end
-- data rows
for k, v in ipairs(years) do
table.insert(wt, '\n|-\n! | ' .. v) -- first column, contains years
for g, l in pairs(showGeogIds) do
if glist[l] then
if history[v].claim[l] then
table.insert(wt, '\n| ' .. history[v].claim[l])
else
table.insert(wt, '\n| ') -- empty table cell
end
end
end
if nts > 0 then
if notes[v] then
table.insert(wt, '\n| ' .. notes[v])
else
table.insert(wt, '\n| ') -- empty table cell
end
end
end
local wts = table.concat(wt)
-- if there are table contents, add the start and end of the table
if #wts > 0 then
wts = '{| class="wikitable"\n|-\n!' .. wts -- start of table and empty top-left cell
wts = wts .. '\n|}' -- end of table
end
local cat = ''
if mw.title.getCurrentTitle().namespace == 0 then
-- category not added except in article namespace
cat = '[[Category:Australian place articles using Wikidata population values]]'
end
return wts .. cat
end
---------------- Function LatestPopulation returns the most recent population value for a specified geography ---------------
-- parameters:
-- required: geog= a single geography type to return pop value for. Valid are 'ucl', 'sal', 'lga', 'iloc'.
-- optional: wikidata= the wikidata item to be used instead of the one in the current page
-- optional: year= any value requests the year to be shown after the population figure
-- optional: punc= any value will be inserted into the output before the reference number
function p.LatestPopulation( frame )
if frame.args.geog == nil then
return ""
end
local geogID = IdForGeog(string.lower(frame.args.geog))
if geogID == nil then
return ""
end
if frame.args.wikidata ~= nil and frame.args.wikidata ~= "" then -- if there's a Wikidata item specified, use it
item = mw.wikibase.getEntity(frame.args.wikidata)
else
item = mw.wikibase.getEntity() -- if there's a Wikidata item connected to the article it will find it here.
end
-- if there are no population claims in the item, return an empty string
if not (item and item.claims and item.claims[Pop_P]) then
return ""
end
------------ PART 1: Find claims that meet mimimum criteria
-- (1) point in time is not nil
-- (2) applies to part is not nil
-- (3) determination method is not nil
-- (4) References table is not empty
local validpopclaims = {}
local z = 0
for j, s in pairs(item.claims[Pop_P]) do
if s.qualifiers ~= nil and
s.qualifiers[Pointin_P]~= nil and
s.qualifiers[Applies_P] ~= nil and
s.qualifiers[DetMeth_P] ~= nil and
s.references ~= nil
then
z = z + 1
validpopclaims[z] = s -- add to valid claims table
end
end
-- if there are no valid claims, return an empty string
if #validpopclaims <1 then
return ""
end
SplitDoubleClaims(validpopclaims) -- any claims with multiple points-in-time are split into separate claims
--------------- PART 2: Find the latest claim for each geography found
local latestclaim = {}
for i, q in pairs(validpopclaims) do
local claimdate = q.qualifiers[Pointin_P][1].datavalue.value.time
local claimgeog = q.qualifiers[Applies_P][1].datavalue.value.id
if latestclaim[claimgeog] == nil
or (latestclaim[claimgeog] ~= nil and claimdate >= latestclaim[claimgeog].qualifiers[Pointin_P][1].datavalue.value.time) then -- if the max date for a particular geography value is later than the previous latest, overwrite with the current latest claim
latestclaim[claimgeog] = q
end
end
--------------- PART 3: Compile the module output, using only latest claim for the specified geography
local wikitext = ""
if latestclaim[geogID] ~= nil then
local yearlink = ""
if (frame.args.year or '') ~= '' then -- year is only shown on request
yearlink = " (" .. GetYearLink(latestclaim[geogID]) .. ")"
end
local refs = GetRefsForClaim(latestclaim[geogID], item.labels.en.value) -- the references for the claim
wikitext = mw.language.getContentLanguage():formatNum(tonumber(latestclaim[geogID].mainsnak.datavalue.value.amount)) .. yearlink .. (frame.args.punc or '') .. refs
end
local cat = ''
if mw.title.getCurrentTitle().namespace == 0 then
-- category not added except in article namespace
cat = '[[Category:Australian place articles using Wikidata population values]]'
end
return wikitext .. cat
end
---------------- Function ListForInfobox returns the most recent population values ---------------
-- parameters:
-- required: type= the type value as for the Infobox
-- optional: wikidata= the wikidata item to be used instead of the one in the current page
-- optional: geog= a single geography type to return pop values for. Valid are 'ucl', 'sal', 'lga', 'iloc'. If left blank, all geographies will be returned.
-- optional: check= any value (eg:1 or yes) means 'yes' will be returned if there would be any population information returned (subject to the other parameter values),
-- otherwise an empty string is returned
function p.ListForInfobox( frame )
if frame.args.type == nil then
return ""
end
local articleplacetype = string.lower(frame.args.type) -- for the place type supplied, change to a lower case string
-- Check for valid place types
if articleplacetype == "city"
or articleplacetype == "town"
or articleplacetype == "locality"
or articleplacetype == "suburb"
or articleplacetype == "settlement"
or articleplacetype == "lga"
or articleplacetype == "region"
then
-- OK to continue
elseif articleplacetype == "cadastral"
or articleplacetype == "protected" then
-- these place types don't have ABS populations
return ""
else
-- unrecognised type supplied
return ""
end
if frame.args.wikidata ~= nil and frame.args.wikidata ~= "" then -- if there's a Wikidata item specified, use it
item = mw.wikibase.getEntity(frame.args.wikidata)
else
item = mw.wikibase.getEntity() -- if there's a Wikidata item connected to the article it will find it here.
end
-- if there are no population claims in the item, return an empty string
if not (item and item.claims and item.claims[Pop_P]) then
return ""
end
------------ PART 1: Find claims that meet mimimum criteria
-- (1) point in time is not nil
-- (2) applies to part is not nil
-- (3) determination method is not nil
-- (4) References table is not empty
local validpopclaims = {}
local z = 0
for j, s in pairs(item.claims[Pop_P]) do
if s.qualifiers ~= nil and
s.qualifiers[Pointin_P] ~= nil and
s.qualifiers[Applies_P] ~= nil and
s.qualifiers[DetMeth_P] ~= nil and
s.references ~= nil
then
z = z + 1
validpopclaims[z] = s -- add to valid claims table
end
end
-- if there are no valid claims, return an empty string
if #validpopclaims <1 then
return ""
end
SplitDoubleClaims(validpopclaims) -- any claims with multiple points-in-time create separate labelled claims
--------------- PART 2: Find the latest claim for each geography found
local latestclaim = {}
for i, q in pairs(validpopclaims) do
local claimdate
if q.pitLabel then
claimdate = q.pitLabel
else
claimdate = q.qualifiers[Pointin_P][1].datavalue.value.time
end
local claimgeog = q.qualifiers[Applies_P][1].datavalue.value.id
if latestclaim[claimgeog] == nil
or (latestclaim[claimgeog] ~= nil and claimdate >= latestclaim[claimgeog].qualifiers[Pointin_P][1].datavalue.value.time) then -- if the max date for a particular geography value is later than the previous latest, overwrite with the current latest claim
latestclaim[claimgeog] = q
end
end
--------------- PART 3: specify the geography types that can be returned for each place type
local showGeogIds = {}
if frame.args.geog ~= nil and frame.args.geog ~= "" then -- if geog is specified, only claims for its id are returned
showGeogIds[1] = IdForGeog(string.lower(frame.args.geog))
else
showGeogIds = GeogIdsForType(articleplacetype)
end
--------------- PART 4: Compile the module output, using only latest claims in specified geographies
local checkonly = frame.args.check ~= nil
local returnlist = {}
for j, t in pairs(showGeogIds) do
if latestclaim[t] ~= nil then
local refs = ''
if not checkonly then
refs = GetRefsForClaim(latestclaim[t], item.labels.en.value) -- the references for the max date claim
end
table.insert(returnlist, mw.language.getContentLanguage():formatNum(tonumber(latestclaim[t].mainsnak.datavalue.value.amount)) .. " (" .. GetAbbrLabel(latestclaim[t]) .. " " .. GetYearLink(latestclaim[t]) .. ")" .. refs)
end
end
local wikitext
if checkonly then
if #returnlist < 1 then
wikitext = '' -- check requested, and no pop data would be returned, return empty string
else
wikitext = 'yes' -- check requested, pop data would be returned, return 'yes'
end
elseif #returnlist == 1 then
-- if there is only one entry in returnlist, return it without a bullet point
wikitext = returnlist[1]
else
-- if there are multiple entries in returnlist, return all the rows with new line and bullet points between them
wikitext = "\n*" .. table.concat(returnlist, "\n*")
end
local cat = ''
if mw.title.getCurrentTitle().namespace == 0 and not checkonly then
-- category not added except in article namespace
cat = '[[Category:Australian place articles using Wikidata population values]]'
end
return wikitext .. cat
--
end
-- ##### function main is only for testing of the code during development
function p.main()
local wdata = 'Q649969' -- Ulladulla
-- local wdata = 'Q4856763' -- Banksiadale - has a merged claim
-- local wdata = 'Q32843813' -- Pigeon Ponds - has a merged claim
-- local wdata = 'Q5032535' -- Cann River - has historic claims with incomplete determination methods
--[[
return p.ListForInfobox( { args = {type = 'town', wikidata = wdata} } ) .. '<br>'
.. p.LatestPopulation( { args = {geog = 'sal', wikidata = wdata, year = 'yes', punc='.'} } )
]]
--[[
return p.HistoricPopulations( { args = {type = 'town', wikidata = wdata} } )
.. '\n\n' .. p.HistoricPopulations( { args = {type = 'town', wikidata = wdata, geog='sal'} } )
.. p.LatestPopulation( { args = {geog = 'sal', wikidata = wdata} } ) .. '<br>'
.. p.LatestPopulation( { args = {geog = 'sal', wikidata = wdata, year = 'yes', punc='.'} } ) .. '<br>'
.. p.ListForInfobox( { args = {type = 'town', wikidata = wdata} } )
]]
return p.HistoricPopulations( { args = {type = 'town', wikidata = wdata, note1_year='2011', note1_text = 'Note for 2011.'} } )
end
return p
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.