Module:Jct/city/sandbox

local p = {}

local concat = table.concat local insert = table.insert

local city local location local areadab local countydab local state local pageContainsLink

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 generateText(num, insertPrefix) local parts if insertPrefix then if num == 1 then parts = {"– "} else parts = {", "} end end if location then insert(parts, location) return concat(parts) end if not pageContainsLink then insert(parts, "" .. city .. "") return concat(parts) else insert(parts, city) return concat(parts) end end

local function _location(args, num, page) city = args["city" .. num] location = args["location" .. num] areadab = args["areadab" .. num] countydab = args["countydab" .. num] if not(city or location) then return '' end if pageContainsLink == false then local place = city or location local jctString = "" local linkString = generateText(num, false) local firstPosition = strfind(page, linkString) if firstPosition then local secondPosition = strfind(page, linkString, firstPosition) if secondPosition or string.find(page, jctString) then pageContainsLink = true end end end return generateText(num, true) end

function p.city(args, page) state = stateName(args) local cities = {} local locationCount = 1 repeat local location = _location(args, locationCount, page) insert(cities, location) local empty = (location == '') locationCount = locationCount + 1 until empty return concat(cities) end

return p