# Module:Infobox road/locations

local p = {}  

local function countries(args, country)  
local data = {EUR = "no", ASIA = "no", default = "yes"}  
local yesOrNo = data[country] or data.default  
if yesOrNo == "no" then  
return args.countries  
else  
return nil  
end  
end  

local function regions(args, country)  
local data = {EUR = "no", ESP = "no", ITA = "no", HRV = "no", CZE = "no", CAN = "no", CYP = "no", GRC = "no", POL = "no", HUN = "no",  
SVN = "no", SVK = "no", AUT = "no", TUR = "no", UKR = "no", BIH = "no", SRB = "no", SGP = "no", AUS = "no", default = "yes"}  
local yesOrNo = data[country] or data.default  
if yesOrNo == "no" then  
return args.regions  
else  
return nil  
end  
end  

local function states(args, country)  
local data = {USA = "no", IND = "no", DEU = "no", AUT = "no", MEX = "no", AUS = "no", BRA = "no", default = "yes"}  
local yesOrNo = data[country] or data.default  
if yesOrNo == "no" then  
return args.states  
else  
return nil  
end  
end  

local function provinces(args, country)  
local data = {TUR = "no", THA = "no", IRN = "no", NLD = "no", ESP = "no", default = "yes"}  
local yesOrNo = data[country] or data.default  
if yesOrNo == "no" then  
return args.provinces  
else  
return nil  
end  
end  

local function counties(args, country)  
local counties = args.counties  
local districts = args.districts  
local municipalities = args.municipalities  
local parishes = args.parishes  
local boroughs = args.boroughs  
if counties then  
return "Counties:", counties  
elseif districts then  
return "Districts:", districts  
elseif municipalities then  
return "Municipalities:", municipalities  
elseif parishes then  
return "Parishes:", parishes  
elseif boroughs then  
return "Boroughs:", boroughs  
else  
return '', nil  
end  
end  

local function ruralMunis(args, country)  
local label  
local province = country or ''  
if province == "AB" then  
label = "Specialized  
and rural  
municipalities:"  
else  
label = "Rural  
municipalities:"  
end  
local data = {MB = "no", SK = "no", AB = "no", default = "yes"}  
local yesOrNo = data[province] or data.default  
if yesOrNo == "no" then  
return label, args.rural_municipalities  
else  
return '', nil  
end  
end  

local function divisions(args, country)  
local province = country or ''  
local data = {ON = "no", default = "yes"}  
local yesOrNo = data[province] or data.default  
if yesOrNo == "no" then  
return args.divisions  
else  
return nil  
end  
end  

local function cities(args, country, parameter)  
local data = {USA = "yes", default = "no"}  
local yesOrNo = data[country] or data.default  
if yesOrNo == "no" then  
return args[parameter]  
else  
return nil  
end  
end  

local function destinations(args, country)  
local label  
if country == "GBR" then  
label = "முதன்மை  
இலக்குகள்:"  
else  
label = "முதன்மை  
இலக்குகள்:"  
end  
local data = {AUS = "no", NZL = "no", GBR = "no", IRL = "no", MYS = "no", IND = "no", NPL = "no", default = "yes"}  
local yesOrNo = data[country] or data.default  
if yesOrNo == "no" then  
return label, args.destinations  
else  
return '', nil  
end  
end  

local function lga(args, country)  
local labels = {SA = "LGA(s)", VIC = "LGA(s)", NSW = "LGA(s)",  
QLD = "LGA(s)", NT = "LGA(s)",  
WA = "LGA(s)", TAS = "LGA(s)", ACT = "District(s)"}  
local data = {AUS = "no", default = "yes"}  
local yesOrNo = data[country] or data.default  
if yesOrNo == "no" then  
local state = args.state or ''  
local label = labels[state] or "LGA(s)"  
return label, args.lga  
else  
return '', nil  
end  
end  

local function locations(args, country)  
local labels = {highway = "Major settlements:", ["rural road"] = "Major settlements:", freeway = "Major suburbs:", ["city highway"] = "Major suburbs:", road = "Major suburbs:", street = "Suburb:"}  
local data = {AUS = "no", default = "yes"}  
local yesOrNo = data[country] or data.default  
if yesOrNo == "no" then  
local type = args.type or ''  
local label = labels[type] or "Primary  
destinations:"  
return label, args.locations  
else  
return '', nil  
end  
end  

function p.locations  
local pframe = :getParent  
local config = .args -- the arguments passed BY the template, in the wikitext of the template itself  
local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template  

local parameters = {label1 = "நாடுகள்:", label2 = "பிராந்தியங்கள்:", label3 = "மாநிலங்கள்:", label4 = "மாகாணங்கள்:", label7 = "பிரிவுகள்:", label8 = "முக்கிய நகரங்கள்:",  
label9 = "ஊர்கள்:", label10 = "கிராமங்கள்:", child = "yes", decat = "yes", label, title = "அமைவிடம்"}  
local data = {}  

local function emptyParam(param)  
if param == '' then  
return nil  
else  
return param  
end  
end  

local country = emptyParam(args.country)  
local state = emptyParam(args.state)  
local province = emptyParam(args.province)  
if not(country) then  
local stateParam = args.state or args.province  
if not(stateParam) then  
country = ''  
else  
local countryMask = require "Module:Infobox road/meta/mask/country"  
country = countryMask._country(stateParam, country)  
end  
end  
data[1] = countries(args, country)  
data[2] = regions(args, country)  
data[3] = states(args, country)  
data[4] = provinces(args, country)  
parameters.label5, data[5] = counties(args, country)  
parameters.label6, data[6] = ruralMunis(args, province)  
data[7] = divisions(args, province)  
data[8] = cities(args, country, 'cities')  
data[9] = cities(args, country, 'towns')  
data[10] = cities(args, country, 'villages')  
parameters.label11, data[11] = destinations(args, country)  
parameters.label12, data[12] = lga(args, country)  
parameters.label13, data[13] = locations(args, country)  

local hasData = false  
for k,v in pairs(data) do  
if v ~= '' then  
hasData = true  
break  
end  
end  
if not(hasData) then  
return ''  
end  

for k,v in pairs(data) do  
parameters["data" .. k] = v  
end  

local infoboxModule = require 'Module:Infobox'  
return infoboxModule.infobox(parameters)  
end  

return p