Module:Jct/city/sandbox explained

local p =

local concat = table.concatlocal insert = table.insert

local citylocal locationlocal areadablocal countydablocal statelocal pageContainsLink

local function stateName(args) local AUSabbrs = 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] endend

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) endend

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