Module:Jct/city

local p = {}

local concat = table.concat

local insert = table.insert

local state

local function stateName(args)

local AUSabbrs = {NT = "Northern Territory", WA = "Western Australia"}

local data = mw.loadData("Module:Jct/statename")

local abbr = args.state or args.province

local country = args.country

if country == 'AUS' then

return AUSabbrs[abbr] or data[abbr]

else

return data[abbr]

end

end

local function location(args, num)

local city = args["city" .. num]

local location = args["location" .. num]

local areadab = args["areadab" .. num]

local countydab = args["countydab" .. num]

if not(city or location) then

return ''

end

local parts

if num == 1 then

parts = {"– "}

else

parts = {", "}

end

if location then

insert(parts, location)

return concat(parts)

end

insert(parts, "[[" .. city)

if areadab then

insert(parts, " (" .. areadab .. ")")

end

if countydab then

insert(parts, ", " .. countydab .. " County")

end

if state then

insert(parts, ", " .. state)

end

insert(parts, "|" .. city .. "]]")

return concat(parts)

end

function p.city(args)

state = stateName(args)

local cities = {}

local locationCount = 1

repeat

local location = location(args, locationCount)

insert(cities, location)

local empty = (location == '')

locationCount = locationCount + 1

until empty

return concat(cities)

end

return p