Module:Sandbox/Innesw/Infobox Australian place
-- This is Template:Infobox_Australian_place converted to Lua
local p = {}
local lframe
local shortDescription = require('Module:GetShortDescription').main
local plainText = require('Module:Plain text')._main
local infobox = require('Module:Infobox').infobox
local getArgs = require('Module:Arguments').getArgs
local infoboxImage = require('Module:InfoboxImage').InfoboxImage
local australianPlaceMap = require('Module:Australian place map').main
local coordinates = require('Module:Coordinates').coordinsert
local populationFromWikidata = require('Module:PopulationFromWikidata').ListForInfobox
local url = require('Module:URL')._url
local check = require('Module:Check for unknown parameters')._check
local lang = mw.language.getContentLanguage()
local function inb(s) -- is not blank
return s and s ~= ''
end
local function backcolour(typ)
local colour
if typ == 'city' then
colour = '#f9f6d2'
elseif typ == 'town' then
colour = '#e9f9d2'
elseif typ == 'suburb' then
colour = '#f9e2d2'
elseif typ == 'lga' then
colour = '#d2d5f9'
elseif typ == 'region' then
colour = '#e6c4fb'
elseif typ == 'cadastral' then
colour = '#ffffe0'
elseif typ == 'protected' then
colour = 'transparent'
elseif typ == 'other' then
colour = 'transparent'
else
colour = '#ccc'
end
return colour
end
local function state_longname(state)
state = string.lower(state)
local longname
if state == 'sa' then
longname = 'South Australia'
elseif state == 'vic' then
longname = 'Victoria'
elseif state == 'nsw' then
longname = 'New South Wales'
elseif state == 'qld' then
longname = 'Queensland'
elseif state == 'nt' then
longname = 'Northern Territory'
elseif state == 'wa' then
longname = 'Western Australia'
elseif state == 'tas' then
longname = 'Tasmania'
elseif state == 'act' then
longname = 'Australian Capital Territory'
elseif state == 'jbt' then
longname = 'Jervis Bay Territory'
elseif state == 'ni' then
longname = 'Norfolk Island'
elseif state == 'au' then
longname = 'Australia'
elseif inb(state) then
-- state supplied, but with unrecognised value
longname = lframe:expandTemplate{title = 'error', args = {'Error: unknown |state=
value (=' .. state .. ') (help)'} }
else
-- state not supplied
longname = lframe:expandTemplate{title = 'error', args = {'Error: |state=
not defined (help)'} }
end
return longname
end
local function coords_region(state)
state = string.lower(state)
local region
if state == 'sa' then
region = 'AU-SA'
elseif state == 'vic' then
region = 'AU-VIC'
elseif state == 'nsw' then
region = 'AU-NSW'
elseif state == 'qld' then
region = 'AU-QLD'
elseif state == 'nt' then
region = 'AU-NT'
elseif state == 'wa' then
region = 'AU-WA'
elseif state == 'tas' then
region = 'AU-TAS'
elseif state == 'act' then
region = 'AU-ACT'
elseif state == 'jbt' then
region = 'AU-JBT'
elseif state == 'ni' then
region = 'NF'
else
region = 'AU'
end
return region
end
local function location(loc, dir, dist, list)
if not (inb(loc) and inb(dist)) then
return ''
end
local sloc = {}
if list then
table.insert(sloc, '
end
table.insert(sloc, lframe:expandTemplate{title = 'convert', args = {dist, 'km', 'mi', 0, abbr='on'} })
if inb(dir) then
table.insert(sloc, ' ' .. dir .. ' of ')
else
table.insert(sloc, ' from ')
end
if inb(loc) then
table.insert(sloc, lframe:expandTemplate{title = 'auto link', args = {loc} })
end
if list then
table.insert(sloc, '
end
return table.concat(sloc)
end
local function lgas_article(state)
state = string.lower(state)
local art
if state == 'sa' then
art = 'LGA(s)'
elseif state == 'vic' then
art = 'LGA(s)'
elseif state == 'nsw' then
art = 'LGA(s)'
elseif state == 'qld' then
art = 'LGA(s)'
elseif state == 'nt' then
art = 'LGA(s)'
elseif state == 'wa' then
art = 'LGA(s)'
elseif state == 'tas' then
art = 'LGA(s)'
elseif state == 'act' then
art = 'District'
else
art = 'LGA(s)'
end
return art
end
local function pageExists(pagename)
local pageTitle = mw.title.makeTitle("", pagename)
if pageTitle then
return pageTitle.exists
end
return false
end
local function state_protectedPage(state)
state = string.lower(state)
local prot
if state == 'sa' then
prot = 'Protected areas of South Australia'
elseif state == 'vic' then
prot = 'Protected areas of Victoria'
elseif state == 'nsw' then
prot = 'Protected areas of
New South Wales'
elseif state == 'qld' then
prot = 'Protected areas of Queensland'
elseif state == 'nt' then
prot = 'Protected areas of the Northern Territory'
elseif state == 'wa' then
prot = 'List of protected areas of
Western Australia'
elseif state == 'tas' then
prot = 'Protected areas of Tasmania'
elseif state == 'act' then
prot = 'Australian Capital Territory
protected areas'
else
prot = nil
end
return prot
end
local function shortDesc(args)
local sd = {}
-- only set short description in article namespace, and for articles where not already set
local title = mw.title.getCurrentTitle()
if title.namespace == 0 and shortDescription({name=title.text, only='explicit'}) == '' then
table.insert(sd, '{{short description|')
if inb(args['short description']) then
table.insert(sd, args['short description'])
else
local typ = (args.type or ''):lower()
if typ == 'city' then
table.insert(sd, 'City in')
elseif typ == 'town' then
table.insert(sd, 'Town in')
elseif typ == 'suburb' then
local subb
local city = args.city or ''
local lga = args.lga or ''
if city ~= '' then
subb = 'Suburb of ' .. city .. ','
elseif lga ~= '' then
subb = 'Suburb of ' .. lga .. ','
else
subb = 'Suburb in'
end
table.insert(sd, plainText(subb))
elseif typ == 'lga' then
table.insert(sd, 'Local government area in')
elseif typ == 'region' then
table.insert(sd, 'Region in')
elseif typ == 'cadastral' then
table.insert(sd, 'Cadastral in')
elseif typ == 'protected' then
table.insert(sd, 'Protected area in')
else
table.insert(sd, 'Place in')
end
local state = (args.state or ''):lower()
if state == 'sa' then
table.insert(sd, ' South Australia')
elseif state == 'vic' then
table.insert(sd, ' Victoria, Australia')
elseif state == 'nsw' then
table.insert(sd, ' New South Wales, Australia')
elseif state == 'qld' then
table.insert(sd, ' Queensland, Australia')
elseif state == 'nt' then
table.insert(sd, ' the Northern Territory, Australia')
elseif state == 'wa' then
table.insert(sd, ' Western Australia')
elseif state == 'tas' then
table.insert(sd, ' Tasmania, Australia')
elseif state == 'act' then
table.insert(sd, ' Australian Capital Territory')
elseif state == 'jbt' then
table.insert(sd, ' the Jervis Bay Territory, Australia')
elseif state == 'ni' then
table.insert(sd, ' Norfolk Island, Australia')
elseif state == 'au' then
table.insert(sd, ' Australia')
else
table.insert(sd, ' Australia')
end
end
table.insert(sd, '|noreplace}}')
end
return table.concat(sd)
end
local function ibox(args)
local tmp
local InfoboxArgs = {}
local typ = (args.type or ''):lower()
local city = args.city or ''
local state = (args.state or ''):lower()
local name = args.name or ''
InfoboxArgs.bodyclass = 'vcard'
InfoboxArgs.abovestyle = 'font-size: 125%; line-height: 1.3em; background-color:' .. backcolour(typ)
if inb(name) then
tmp = '' .. name .. '
'
if inb(args.native_name) then
tmp = tmp .. '
if inb(args.native_name_lang) then
tmp = tmp .. ' lang="' .. args.native_name_lang .. '"'
end
tmp = tmp .. '>' .. args.native_name .. '
end
tmp = tmp .. ''
if city ~= '' then
tmp = tmp .. lframe:expandTemplate{title = 'auto link', args = { city } } .. ', '
end
tmp = tmp .. state_longname(state) ..''
InfoboxArgs.above = tmp
end
InfoboxArgs.aboveclass = 'adr'
InfoboxArgs.subheaderstyle = 'font-size: 100%;'
if typ == 'protected' then
InfoboxArgs.subheader1 = lframe:expandTemplate{ title = 'IUCN banner', args = { (args.iucn_category or ), (args.iucn_ref or ) } }
end
if inb(args.image) then
local siz
if inb(args.image_size) then
siz = args.image_size
elseif inb(args.imagesize) then
siz = args.imagesize
end
local upr = '1.23'
if inb(args.image_upright) then
upr = args.image_upright
end
local ialt
if inb(args.image_alt) then
ialt = args.image_alt
elseif inb(args.alt) then
ialt = args.alt
end
InfoboxArgs.image = infoboxImage{args = {image = args.image, size = siz, sizedefault = 'frameless', upright = upr, alt = ialt} }
end
InfoboxArgs.imagestyle = nil
InfoboxArgs.caption = (args.caption or '')
InfoboxArgs.captionstyle = nil
if inb(args.image2) then
local siz
if inb(args.image_size2) then
siz = args.image_size2
elseif inb(args.imagesize2) then
siz = args.imagesize2
end
local upr = '1.23'
if inb(args.image2_upright) then
upr = args.image2_upright
end
local ialt
if inb(args.image2_alt) then
ialt = args.image2_alt
elseif inb(args.alt2) then
ialt = args.alt2
end
InfoboxArgs.image2 = infoboxImage{args = {image = args.image2, size = siz, sizedefault = 'frameless', upright = upr, alt = ialt} }
end
InfoboxArgs.caption2 = (args.caption2 or '')
InfoboxArgs.headerstyle = 'background-color:#ddf;'
InfoboxArgs.labelstyle = 'width:40%; background-color:' .. backcolour(typ)
InfoboxArgs.datastyle = nil
InfoboxArgs.data1 = australianPlaceMap(lframe)
InfoboxArgs.data2 = nil
if inb(args.local_map) then
InfoboxArgs.data2 = lframe:expandTemplate{ title = 'Infobox mapframe', args = {zoom = (args.zoom or ), id = (args.local_map_id or )} }
end
InfoboxArgs.label3 = 'Nearest town or city'
InfoboxArgs.data3 = nil
if typ == 'protected' then
InfoboxArgs.data3 = lframe:expandTemplate{ title = 'auto link', args = {(args.nearest_town_or_city or '') } }
end
InfoboxArgs.label4 = 'Coordinates'
InfoboxArgs.data4 = nil
if inb(args.coordinates) then
-- the type: and region: parameters to Module:Coordinates seem to be over-ridden by this code, even though they could be in the {{coords}} call that produces the content of the coordinates parameter
local mtyp = ''
if typ == 'protected' then
mtyp = 'landmark'
else
mtyp = 'city'
end
InfoboxArgs.data4 = coordinates{args = {args.coordinates, 'type:' .. mtyp, 'region:' .. coords_region(state)} } .. (args.coord_ref or '')
end
InfoboxArgs.label6 = 'Population'
tmp = nil
if inb(args.pop) then
if inb(args.pop2) then
tmp = '
- '
else
tmp = ''
end
if tonumber(args.pop) then
-- pop looks like a number
tmp = tmp .. lang:formatNum(tonumber(args.pop))
else
-- just show it
tmp = tmp .. args.pop
end
if inb(args.pop_year) then
tmp = tmp .. ' (' .. args.pop_year .. ')'
end
tmp = tmp .. (args.pop_footnotes or '')
if inb(args.poprank) then
tmp = tmp .. ' (' .. args.poprank .. ')'
end
if inb(args.pop2) then
tmp = tmp .. '
- '
if tonumber(args.pop2) then
-- pop2 looks like a number
tmp = tmp .. lang:formatNum(tonumber(args.pop2))
else
-- just show it
tmp = tmp .. args.pop2
end
if inb(args.pop2_year) then
tmp = tmp .. ' (' .. args.pop2_year .. ')'
end
tmp = tmp .. (args.pop2_footnotes or '')
tmp = tmp .. '
end
else
local wdpop = populationFromWikidata{args = {type = typ, wikidata = (args.wikidata or '')} }
if inb(wdpop) then
-- The
-- I don't know why, but the output from {{#invoke:PopulationFromWikidata | ListForInfobox }} in the template version is treated properly,
-- but the output from calling require('Module:PopulationFromWikidata').ListForInfobox in this module is not, requiring this fix.
tmp = '
end
end
InfoboxArgs.data6 = tmp
InfoboxArgs.label7 = ' • Density'
tmp = nil
if inb(args.density) then
tmp = lframe:expandTemplate{ title = 'convert', args = {args.density, '/km2', '/sqmi', abbr='on'} } .. ' ' .. (args.density_footnotes or '')
else
if inb(args.pop) and lang:parseFormattedNumber(args.pop) and inb(args.area) then
tmp = lframe:expandTemplate{ title = 'Pop density', args = {lang:parseFormattedNumber(args.pop), args.area, 'km2', 'sqmi'} } .. ' ' .. (args.density_footnotes or '')
end
end
InfoboxArgs.data7 = tmp
InfoboxArgs.label8 = 'Established'
tmp = nil
if inb(args.established) then
tmp = args.established .. (args.established_footnotes or '')
elseif inb(args.est) then
tmp = args.est .. (args.established_footnotes or '')
end
InfoboxArgs.data8 = tmp
InfoboxArgs.label9 = 'Abolished'
InfoboxArgs.data9 = args.abolished or ''
InfoboxArgs.label10 = 'Gazetted'
InfoboxArgs.data10 = args.gazetted or ''
InfoboxArgs.label11 = 'Postcode(s)'
InfoboxArgs.data11 = args.postcode or ''
InfoboxArgs.label12 = 'Elevation'
if inb(args.elevation) then
InfoboxArgs.data12 = lframe:expandTemplate{ title = 'convert', args = {args.elevation, 'm', 'ft', 0, abbr='on'} } .. (args.elevation_footnotes or '')
end
InfoboxArgs.label13 = 'Area'
if inb(args.area) then
InfoboxArgs.data13 = lframe:expandTemplate{ title = 'convert', args = {args.area, 'km2', 'sqmi', 1, abbr='on'} } .. (args.area_footnotes or '')
end
InfoboxArgs.label14 = 'Time zone'
if inb(args.timezone) then
InfoboxArgs.data14 = args.timezone .. ' ' .. '(UTC' .. (args.utc or '') .. ')'
end
InfoboxArgs.label15 = ' • Summer (DST)'
if inb(args['timezone-dst']) then
InfoboxArgs.data15 = args['timezone-dst'] .. ' ' .. '(UTC' .. (args['utc-dst'] or '') .. ')'
end
InfoboxArgs.label16 = (args.mayortitle or 'Mayor')
if typ == 'lga' and inb(args.mayor) then
InfoboxArgs.data16 = args.mayor
end
InfoboxArgs.label17 = 'Location'
tmp = ''
if inb(args.dist2) then
tmp = '
- '
tmp = tmp .. location(args.location1, args.dir1, args.dist1, true)
tmp = tmp .. location(args.location2, args.dir2, args.dist2, true)
tmp = tmp .. location(args.location3, args.dir3, args.dist3, true)
tmp = tmp .. location(args.location4, args.dir4, args.dist4, true)
tmp = tmp .. location(args.location5, args.dir5, args.dist5, true)
tmp = tmp .. '
elseif inb(args.location1) then
tmp = location(args.location1, args.dir1, args.dist1, false)
end
InfoboxArgs.data17 = tmp
InfoboxArgs.label18 = lgas_article(state)
tmp = nil
if inb(args.lga) then
local lga2 = args.lga2 or ''
if lga2 ~= '' then
tmp = '
- '
else
tmp = ''
end
tmp = tmp .. lframe:expandTemplate{title = 'auto link', args = {args.lga} }
if lga2 ~= '' then
tmp = tmp .. '
- ' .. lframe:expandTemplate{title = 'auto link', args = {lga2} } .. ' '
- ' .. lframe:expandTemplate{title = 'auto link', args = {args.lga3} } .. ' '
- ' .. lframe:expandTemplate{title = 'auto link', args = {args.lga4} } .. ' '
- ' .. lframe:expandTemplate{title = 'auto link', args = {args.lga5} } .. ' '
end
if inb(args.lga3) then
tmp = tmp .. '
end
if inb(args.lga4) then
tmp = tmp .. '
end
if inb(args.lga5) then
tmp = tmp .. '
end
if lga2 ~= '' then
tmp = tmp .. '
end
end
InfoboxArgs.data18 = tmp
InfoboxArgs.label19 = 'Council seat'
InfoboxArgs.data19 = args.seat or ''
InfoboxArgs.label20 = 'Region'
if inb(args.region) then
InfoboxArgs.data20 = lframe:expandTemplate{title = 'auto link', args = {args.region} }
end
InfoboxArgs.label21 = 'County'
if inb(args.county) then
InfoboxArgs.data21 = lframe:expandTemplate{title = 'auto link', args = {args.county} }
end
InfoboxArgs.label22 = 'Parish'
InfoboxArgs.data22 = args.parish or ''
if typ == 'cadastral' then
InfoboxArgs.label23 = 'Hundred'
InfoboxArgs.data23 = args.hundred or ''
InfoboxArgs.label24 = 'Hundred (former)'
InfoboxArgs.data24 = args.former_hundred or ''
InfoboxArgs.label25 = 'Division'
InfoboxArgs.data25 = args.division or ''
end
if state == 'act' or state == 'nt' or state == 'jbt' then
InfoboxArgs.label26 = 'Territory electorates(s)'
else
InfoboxArgs.label26 = 'State electorate(s)'
end
tmp = nil
if inb(args.stategov) then
local stategov2 = (args.stategov2 or '')
if stategov2 ~= '' then
tmp = '
- '
else
tmp = ''
end
tmp = tmp .. args.stategov
if stategov2 ~= '' then
tmp = tmp .. '
- ' .. stategov2 .. ' '
- ' .. args.stategov3 .. ' '
- ' .. args.stategov4 .. ' '
- ' .. args.stategov5 .. ' '
end
if inb(args.stategov3) then
tmp = tmp .. '
end
if inb(args.stategov4) then
tmp = tmp .. '
end
if inb(args.stategov5) then
tmp = tmp .. '
end
if stategov2 ~= '' then
tmp = tmp .. '
end
end
InfoboxArgs.data26 = tmp
InfoboxArgs.label27 = 'Federal division(s)'
tmp = nil
if inb(args.fedgov) then
local fedgov2 = args.fedgov2 or ''
if fedgov2 ~= '' then
tmp = '
- '
else
tmp = ''
end
tmp = tmp .. args.fedgov
if fedgov2 ~= '' then
tmp = tmp .. '
- ' .. fedgov2 .. ' '
- ' .. args.fedgov3 .. ' '
- ' .. args.fedgov4 .. ' '
end
if inb(args.fedgov3) then
tmp = tmp .. '
end
if inb(args.fedgov4) then
tmp = tmp .. '
end
if fedgov2 ~= '' then
tmp = tmp .. '
end
end
InfoboxArgs.data27 = tmp
if inb(args.logo) then
local siz
if inb(args.logosize) then
siz = args.logosize
end
local upr = '0.8'
if inb(args.logo_upright) then
upr = args.logo_upright
end
local lalt
if inb(args.logo_alt) then
lalt = args.logo_alt
end
InfoboxArgs.data28 = infoboxImage{args = {image = args.logo, size = siz, sizedefault = 'frameless', upright = upr, alt = lalt} }
end
InfoboxArgs.label29 = 'Visitation'
if typ == 'protected' then
tmp = nil
if inb(args.visitation_num) then
if tonumber(args.visitation_num) then
-- visitation_num looks like a number
tmp = lang:formatNum(tonumber(args.visitation_num))
else
-- just show it
tmp = args.visitation_num
end
if inb(args.visitation_year) then
tmp = tmp .. ' (in ' .. args.visitation_year .. ')'
end
tmp = tmp .. (args.visitation_footnotes or '')
InfoboxArgs.data29 = tmp
end
InfoboxArgs.label30 = 'Managing authorities'
if inb(args.managing_authorities) then
InfoboxArgs.data30 = lframe:expandTemplate{title = 'auto link', args = {args.managing_authorities} }
end
end
InfoboxArgs.label31 = 'Website'
if inb(args.url) then
InfoboxArgs.data31 = url(args.url, name) .. ' '
end
tmp = nil
if inb(args.maxtemp) or inb(args.mintemp) or inb(args.rainfall) then
tmp = '
' .. '\'\'\'Mean max temp\'\'\ .. (args.maxtemp_footnotes or ) .. ' | '\'\'\'Mean min temp\'\'\ .. (args.mintemp_footnotes or ) .. ' | '\'\'\'Annual rainfall\'\'\ .. (args.rainfall_footnotes or ) .. ' | '
'
if inb(args.maxtemp) then tmp = tmp .. lframe:expandTemplate{ title = 'convert', args = {args.maxtemp, 'C', 'F', 0, disp='br'} } .. ' | '
'
if inb(args.mintemp) then tmp = tmp .. lframe:expandTemplate{ title = 'convert', args = {args.mintemp, 'C', 'F', 0, disp='br'} } .. ' | '
'
if inb(args.rainfall) then tmp = tmp .. lframe:expandTemplate{ title = 'convert', args = {args.rainfall, 'mm', 'in', 1, disp='br', abbr='on'} } .. ' | '
end
InfoboxArgs.data32 = tmp
tmp = nil
if inb(args['near'])
or inb(args['near-nw'])
or inb(args['near-n'])
or inb(args['near-ne'])
or inb(args['near-w'])
or inb(args['near-e'])
or inb(args['near-sw'])
or inb(args['near-se'])
or inb(args['near-s']) then
tmp = '
\'\'\''
if typ == 'cadastral' then tmp = tmp .. 'Lands administrative divisions' elseif typ == 'lga' then tmp = tmp .. 'LGAs' elseif typ == 'suburb' then if city ~= '' then if pageExists('List of ' .. city .. ' suburbs') then tmp = tmp .. 'Suburbs' elseif pageExists('Category:Suburbs of the City of ' .. city) then tmp = tmp .. 'Suburbs' elseif pageExists('Category:Suburbs of ' .. city) then tmp = tmp .. 'Suburbs' else tmp = tmp .. 'Suburbs' end else tmp = tmp .. 'Suburbs' end else tmp = tmp .. 'Localities' end tmp = tmp .. ' around ' if name ~= '' then tmp = tmp .. name else tmp = tmp .. lframe:expandTemplate{ title = 'PAGENAMEBASE'} end tmp = tmp .. '\'\'\' | |||
' .. (args['near-nw'] or '') .. ' | '' .. (args['near-n'] or '') .. ' | '' .. (args['near-ne'] or '') .. ' | '|
' .. (args['near-w'] or '') .. ' | '' .. args['near'] .. ' | '' .. name .. ' | '' .. (args['near-e'] or '') .. ' | '
' .. (args['near-sw'] or '') .. ' | '' .. (args['near-s'] or '') .. ' | '' .. (args['near-se'] or '') .. ' | '
end
InfoboxArgs.data33 = tmp
InfoboxArgs.label34 = 'Footnotes'
InfoboxArgs.data34 = args.footnotes or ''
InfoboxArgs.label35 = 'See also'
if typ == 'protected' and inb(args.iucn_category) and state~= '' then
InfoboxArgs.data35 = state_protectedPage(state)
end
tmp = nil
if typ == '' then
tmp = lframe:expandTemplate{ title = 'Error', args = {'Error: |type=
not defined (help)'} }
elseif not (typ == 'city' or typ == 'town' or typ == 'suburb' or typ == 'lga' or typ == 'region' or typ == 'cadastral' or typ == 'protected' or typ == 'other') then
tmp = lframe:expandTemplate{ title = 'Error', args = {'Error: unknown |type=
value (=' .. typ .. ') (help)'} }
end
InfoboxArgs.data36 = tmp
return infobox(InfoboxArgs)
end
local function categories(args)
local cats = {}
local typ = string.lower(args.type or '')
local state = string.lower(args.state or '')
if mw.title.getCurrentTitle().namespace == 0 then
-- no categories are created except in article namespace
if inb(args._noautocat) then
-- suppress auto categories. Note: does not suppress the tracking categories
else
local name = (args.name or '')
if typ == 'town' then
if state == 'sa' then
table.insert(cats, '' .. name .. '')
elseif state == 'vic' then
table.insert(cats, '' .. name .. '')
elseif state == 'nsw' then
table.insert(cats, '' .. name .. '')
elseif state == 'qld' then
table.insert(cats, '' .. name .. '')
elseif state == 'nt' then
table.insert(cats, '' .. name .. '')
elseif state == 'wa' then
table.insert(cats, '' .. name .. '')
elseif state == 'tas' then
table.insert(cats, '' .. name .. '')
elseif state == 'act' then
table.insert(cats, '' .. name .. '')
elseif state == 'ni' then
table.insert(cats, '' .. name .. '')
end
elseif typ == 'suburb' then
local city = args.city or ''
if pageExists('Category:Suburbs of the City of ' .. city) then
table.insert(cats, '' .. name .. '')
elseif pageExists('Category:Suburbs of ' .. city) then
table.insert(cats, '' .. name .. '')
else
if state == 'sa' and pageExists('Category:Suburbs of ' .. city .. ', South Australia') then
table.insert(cats, '' .. name .. '')
elseif state == 'vic' and pageExists('Category:Suburbs of ' .. city .. ', Victoria') then
table.insert(cats, '' .. name .. '')
elseif state == 'nsw' and pageExists('Category:Suburbs of ' .. city .. ', New South Wales') then
table.insert(cats, '' .. name .. '')
elseif state == 'qld' and pageExists('Category:Suburbs of ' .. city .. ', Queensland') then
table.insert(cats, '' .. name .. '')
elseif state == 'nt' and pageExists('Category:Suburbs of ' .. city .. ', Northern Territory') then
table.insert(cats, '' .. name .. '')
elseif state == 'wa' and pageExists('Category:Suburbs of ' .. city .. ', Western Australi') then
table.insert(cats, '' .. name .. '')
elseif state == 'tas' and pageExists('Category:Suburbs of ' .. city .. ', Tasmania') then
table.insert(cats, '' .. name .. '')
elseif state == 'act' and pageExists('Category:Suburbs of ' .. city .. ', ACT') then
table.insert(cats, '' .. name .. '')
end
end
elseif inb(args.est) and typ == 'lga' then
if pageExists('Category:Populated places established in ' .. (args.est or '')) then
table.insert(cats, '' .. name .. '')
elseif pageExists('Category:Populated places established in the ' .. (args.est or '')) then
table.insert(cats, '' .. name .. '')
elseif pageExists('Category:' .. (args.est or '') .. ' establishments in Australia') then
table.insert(cats, '' .. name .. '')
end
end
end
-- Tracking categories
if args['1'] then
-- The '1' parameter occurs when there is a missing equals sign, or spurious pipes. Usually harmless, but can mask other issues, so it is better to track them.
table.insert(cats, '1')
end
if (args.type or ) == then
table.insert(cats, 'U')
end
if (args.state or ) == then
table.insert(cats, 'S')
end
if inb(args.pop) then
if (args.pop_year or ) == then
table.insert(cats, 'Category:Australian place articles with no population year')
end
if (args.pop_footnotes or ) == then
table.insert(cats, 'Category:Australian place articles with no population footnotes')
end
end
if inb(args.pop2) then
if (args.pop2_year or ) == then
table.insert(cats, 'Category:Australian place articles with no population year')
end
if (args.pop2_footnotes or ) == then
table.insert(cats, 'Category:Australian place articles with no population footnotes')
end
end
if (args.density or ) == and inb(args.pop) and inb(args.area) then
if lang:parseFormattedNumber(args.pop) and type(args.area) == 'number' then
-- density calculation should be OK
else
table.insert(cats, 'Category:Australian place articles with density errors')
end
end
if args.imagesize or args.image2size or args.imagesize2 or args.image_alt2 then
table.insert(cats, 'I')
end
if args.logosize then
table.insert(cats, 'L')
end
if args.official_site then
table.insert(cats, 'O')
end
if args.coordinates then
if typ == 'lga' then
if string.lower(args.map_type or ) == or string.lower(args.map_type or '') == 'auto' then
if inb(args.alternative_location_map) or inb(args.force_national_map) or inb(args.use_lga_map) then
table.insert(cats, 'Category:Pages using infobox Australian place with lga type and location map')
else
table.insert(cats, 'Category:Pages using infobox Australian place with an implicitly suppressed location map')
end
else
table.insert(cats, 'Category:Pages using infobox Australian place with lga type and location map')
end
elseif string.lower(args.map_type or '') == 'nomap' then
table.insert(cats, 'Category:Pages using infobox Australian place with an explicitly suppressed location map')
end
end
table.insert(cats, check({
unknown='_VALUE_' .. lframe:expandTemplate{title = 'PAGENAME'} .. '',
preview='Page using Template:Infobox Australian place with unknown parameter "_VALUE_"',
ignoreblank='y',
'_noautocat',
'abolished', 'alternative_location_map', 'area', 'area_footnotes',
'caption', 'caption2', 'city', 'coord_ref', 'coordinates ', 'county',
'density', 'density_footnotes', 'dir1', 'dir2', 'dir3', 'dir4', 'dir5', 'dist1', 'dist2', 'dist3', 'dist4', 'dist5', 'division',
'elevation', 'elevation_footnotes', 'est', 'established', 'established_footnotes',
'fedgov', 'fedgov2', 'fedgov3', 'fedgov4', 'footnotes', 'force_national_map', 'former_hundred', 'gazetted', 'hundred',
'image', 'image_alt', 'image_upright', 'image2', 'image2_alt', 'image2_upright', 'iucn_category', 'iucn_ref',
'lga', 'lga2', 'lga3', 'lga4', 'lga5', 'local_map', 'local_map_id', 'location1', 'location2', 'location3', 'location4', 'location5', 'logo', 'logo_upright',
'managing_authorities', 'map_alt', 'map_type', 'maxtemp', 'maxtemp_footnotes', 'mayor', 'mayortitle', 'mintemp', 'mintemp_footnotes',
'name', 'native_name_lang', 'native_name', 'near', 'near-e', 'nearest_town_or_city', 'near-n', 'near-ne', 'near-nw', 'near-s', 'near-se', 'near-sw', 'near-w',
'parish', 'pop', 'pop_footnotes', 'pop_year', 'pop2', 'pop2_footnotes', 'pop2_year', 'poprank', 'postcode', 'pushpin_label_position', 'pushpin_map_caption',
'rainfall', 'rainfall_footnotes', 'region', 'relief', 'seat', 'state', 'stategov', 'stategov2', 'stategov3', 'stategov4', 'stategov5',
'timezone', 'timezone-dst', 'type', 'url', 'use_lga_map', 'utc', 'utc-dst',
'visitation_footnotes', 'visitation_num', 'visitation_year', 'wikidata', 'zoom'
}, args))
end
return table.concat(cats)
end
function p.main(frame)
lframe = frame
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame)
return shortDesc(args) .. ibox(args) .. categories(args)
end
return p