Module:Infobox road/locations/sandbox
Appearance
![]() | This is the module sandbox page for Module:Infobox road/locations (diff). |
local p = {}
local insert = table.insert
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", 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<br>and rural<br>municipalities:"
else
label = "Rural<br>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 = "[[Primary status|Primary<br>destinations]]:"
else
label = "Primary<br>destinations:"
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 = "[[Local government areas of South Australia|LGA(s)]]",
VIC = "[[Local government in Victoria|LGA(s)]]",
NSW = "[[Local government areas of New South Wales|LGA(s)]]",
QLD = "[[Local government areas of Queensland|LGA(s)]]",
NT = "[[Local government areas of the Northern Territory|LGA(s)]]",
WA = "[[Local government areas of Western Australia|LGA(s)]]",
TAS = "[[Local government areas of Tasmania|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 "[[Local government in Australia|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<br>destinations:"
return label, args.locations
else
return '', nil
end
end
local function emptyParam(param)
if param == '' then
return nil
else
return param
end
end
function p.locations(frame)
local pframe = frame:getParent()
local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template
local data = {}
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
local countries_ = countries(args, country)
if countries_ and countries_ ~= "" then
insert(data, {label = "Countries:", data = countries_})
end
local regions_ = regions(args, country)
if regions_ and regions_ ~= "" then
insert(data, {label = "Regions:", data = regions_})
end
local states_ = states(args, country)
if states_ and states_ ~= "" then
insert(data, {label = "States:", data = states_})
end
local provinces_ = provinces(args, country)
if provinces_ and provinces_ ~= "" then
insert(data, {label = "Provinces:", data = provinces_})
end
local countiesLabel, counties_ = counties(args, country)
if counties_ and counties_ ~= "" then
insert(data, {label = countiesLabel, data = counties_})
end
local ruralMunisLabel, ruralMunis__ = ruralMunis(args, country)
if ruralMunis__ and ruralMunis__ ~= "" then
insert(data, {label = ruralMunisLabel, data = ruralMunis__})
end
local divisions = divisions(args, country)
if divisions and divisions ~= "" then
insert(data, {label = "Divisions:", data = divisions})
end
local cities_ = cities(args, country, "cities")
if cities_ and cities_ ~= "" then
insert(data, {label = "Major cities:", data = cities_})
end
local towns_ = cities(args, country, "towns")
if towns_ and towns_ ~= "" then
insert(data, {label = "Towns:", data = towns_})
end
local villages_ = cities(args, country, "villages")
if villages_ and villages_ ~= "" then
insert(data, {label = "Villages:", data = villages_})
end
local destinationsLabel, destinations__ = destinations(args, country)
if destinations__ and destinations__ ~= "" then
insert(data, {label = destinationsLabel, data = destinations__})
end
local lgaLabel, lga_ = lga(args, country)
if lga_ and lga_ ~= "" then
insert(data, {label = lgaLabel, data = lga_})
end
local locationsLabel, locations_ = locations(args, country)
if locations_ and locations_ ~= "" then
insert(data, {label = locationsLabel, data = locations_})
end
return data
end
return p