Jump to content

Module:Infobox road/locations/sandbox

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Chinissai (talk | contribs) at 15:52, 29 April 2016 (Created page with 'local p = {} local insert = table.insert local function countries(args, country) local data = {EUR = "no", ASIA = "no", default = "yes"} local yesOrNo = data...'). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (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