Jump to content

Module:Infobox road/locations/sandbox

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Fredddie (talk | contribs) at 20:45, 10 December 2021 (add MEX and RUS). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
local p = {}

local roadDataModule = require('Module:Road data')
local format = mw.ustring.format
local frame = mw.getCurrentFrame()
local getArgs = require('Module:Arguments').getArgs

local function country(args)
	local state = args.state or args.province
	local country
	local countryModule = mw.loadData("Module:Road data/countrymask")
	local country = args.country or countryModule[state]
	
	return country
end

local function state(args)
	local state = args.state or args.province
	local country
	local countryModule = mw.loadData("Module:Road data/countrymask")
	local country = args.country or countryModule[state]
	
	if state == "GA" then
		return "Georgia (U.S. state) |name=Georgia"
	else
		return frame:expandTemplate ({title='Country name', args = { country .. "-" .. state}})
	end
end

local function lga(args)
    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 state = args.state or ''
    local label = labels[state] or "[[Local government in Australia|LGA(s)]]"
    return label, args.lga
end

local function locations(args)
    local labels = {
    	highway = "Major settlements",
    	["rural road"] = "Major settlements",
    	freeway = "Major suburbs",
    	["city highway"] = "Major suburbs",
    	road = "Major suburbs",
    	street = "Suburb"
    }
    local type = args.type or ''
    local label = labels[type] or "Primary<br>destinations"
    return label, args.locations
end

local function location(args)
	
	local infobox_args = {}
	
	infobox_args['title'] = 'Location'
	infobox_args['bodystyle'] = 'display:inline-table;'
	infobox_args['child'] = 'yes'

	------------- AUSTRALIA --------------
	if country(args) == "AUS" then
		infobox_args['label1'] = 'Country'
		infobox_args['data1'] = "[[Australia]]"
		
		if args.state then
			if args.state == "NT" or args.state == "ACT" or args.state == "JBT" then
				infobox_args['label2'] = 'Territory'
			else
				infobox_args['label2'] = 'State'
			end
				infobox_args['data2'] = frame:expandTemplate ({title='Flag', args = { state(args)}})
		else
			infobox_args['label2'] = 'States'
			infobox_args['data2'] = args.states
		end
		
		infobox_args['label3'], infobox_args['data3'] = lga(args)
		infobox_args['label4'], infobox_args['data4'] = locations(args)
		
	------------- CANADA --------------	
	elseif country(args) == "CAN" then
		infobox_args['label1'] = 'Country'
		infobox_args['data1'] = "[[Canada]]"
		
		if args.province then
			if args.province == "YK" or args.province == "NT" or args.province == "NU" then
				infobox_args['label2'] = 'Territory'
			else
				infobox_args['label2'] = 'Province'
			end
				infobox_args['data2'] = frame:expandTemplate ({title='Flag', args = { state(args)}})
		else
			infobox_args['label2'] = 'Provinces'
			infobox_args['data2'] = args.provinces
		end
		
			if args.province == 'AB' then
				infobox_args['label3'] = "Specialized and rural municipalities"
				infobox_args['data3'] = args.rural_municipalities
				infobox_args['label4'] = "Special areas"
				infobox_args['data4'] = args.areas
				infobox_args['label5'] = "Improvement districts"
				infobox_args['data5'] = args.districts
			elseif args.province == 'BC' then
				infobox_args['label3'] = "Regional districts"
				infobox_args['data3'] = args.districts or args.rural_municipalities
			elseif args.province == 'MB' or args.province == 'SK' then
				infobox_args['label3'] = "Rural municipalities"
				infobox_args['data3'] = args.rural_municipalities
			elseif args.province == 'NB' or args.province == 'PE' then
				infobox_args['label3'] = "Counties"
				infobox_args['data3'] = args.counties
				infobox_args['label4'] = "Parishes"
				infobox_args['data4'] = args.parishes
			elseif args.province == 'NS' then
				infobox_args['label3'] = "Counties"
				infobox_args['data3'] = args.counties
			elseif args.province == 'ON' then
				infobox_args['label3'] = "Municipalities"
				infobox_args['data3'] = args.rural_municipalities
				infobox_args['label4'] = "Counties"
				infobox_args['data4'] = args.counties
				infobox_args['label5'] = "Regions"
				infobox_args['data5'] = args.regions
				infobox_args['label6'] = "Districts"
				infobox_args['data6'] = args.districts
				infobox_args['label7'] = "Divisions"
				infobox_args['data7'] = args.divisions
			elseif args.province == 'QC' then
				infobox_args['label3'] = "Regional county municipalities"
				infobox_args['data3'] = args.rural_municipalities
				infobox_args['label4'] = "Equivalent territories"
				infobox_args['data4'] = args.territories
			elseif args.province == 'NT' or args.province == 'NU' then
				infobox_args['label3'] = "Regions"
				infobox_args['data3'] = args.regions
			end
			
	------------- MEXICO --------------
	elseif country(args) == "MEX" then
		infobox_args['label1'] = 'Country'
		infobox_args['data1'] = "[[Mexico]]"
		
		if args.state then
			if args.state == "CMX" then
				infobox_args['label2'] = 'Autonomous city'
			else
				infobox_args['label2'] = 'State'
			end
				infobox_args['data2'] = frame:expandTemplate ({title='Flag', args = { state(args)}})
		else
			infobox_args['label2'] = 'States'
			infobox_args['data2'] = args.states
		end
			
	------------- RUSSIA --------------
	elseif country(args) == "RUS" then
		infobox_args['label1'] = 'Country'
		infobox_args['data1'] = "[[Russia]]"
		infobox_args['label2'] = 'Oblasts'
		infobox_args['data2'] = args.oblasts
		infobox_args['label3'] = 'Republics'
		infobox_args['data3'] = args.republics
		infobox_args['label4'] = 'Autonomous okrugs'
		infobox_args['data4'] = args.okrugs
		infobox_args['label5'] = 'Krais'
		infobox_args['data5'] = args.krais
		infobox_args['label6'] = 'Federal cities'
		infobox_args['data6'] = args.federal_cities

	------------- UNITED STATES --------------
	elseif country(args) == "USA" then
		infobox_args['label1'] = 'Country'
		infobox_args['data1'] = "[[United States]]"
		
		if args.state then
			if args.state == "AS" or args.state == "GU" or args.state == "PR" or args.state == "VI" then
				infobox_args['label2'] = 'Territory'
			else
				infobox_args['label2'] = 'State'
			end
				infobox_args['data2'] = frame:expandTemplate ({title='Flag', args = { state(args)}})
		else
			infobox_args['label2'] = 'States'
			infobox_args['data2'] = args.states
		end
		
		if args.county then
			infobox_args['label3'] = 'County'
			infobox_args['data3'] = args.county
		else
			infobox_args['label3'] = 'Counties'
			infobox_args['data3'] = args.counties
		end
		
		if args.parish then
			infobox_args['label4'] = 'Parish'
			infobox_args['data4'] = args.parish
		else
			infobox_args['label4'] = 'Parishes'
			infobox_args['data4'] = args.parishes
		end
		
		if args.borough then
			infobox_args['label5'] = 'Borough'
			infobox_args['data5'] = args.borough
		else
			infobox_args['label5'] = 'Boroughs'
			infobox_args['data5'] = args.boroughs
		end
		
		if args.municipality then
			infobox_args['label6'] = 'Municipality'
			infobox_args['data6'] = args.municipality
		else
			infobox_args['label6'] = 'Municipalities'
			infobox_args['data6'] = args.municipalities
		end
		
	else
		
	------------- ALL OTHER COUNTRIES --------------
	if country(args) ~= nil then
		infobox_args['label1'] = 'Country'
		infobox_args['data1'] = frame:expandTemplate ({title='Flagcountry', args = { country(args)}})
	else
		infobox_args['label1'] = 'Countries'
		infobox_args['data1'] = args.countries
	end
	
	infobox_args['label2'] = 'Island'
	infobox_args['data2'] = args.island
	infobox_args['label3'] = 'Communities'
	infobox_args['data3'] = args.communities
	infobox_args['label4'] = 'Regions'
	infobox_args['data4'] = args.regions
	infobox_args['label5'] = 'Provinces'
	infobox_args['data5'] = args.provinces
	infobox_args['label6'] = 'States'
	infobox_args['data6'] = args.states
	infobox_args['label7'] = 'Governorates'
	infobox_args['data7'] = args.governorates
	infobox_args['label8'] = 'Counties'
	infobox_args['data8'] = args.counties
	infobox_args['label9'] = 'Departments'
	infobox_args['data9'] = args.departments
	infobox_args['label10'] = 'Cantons'
	infobox_args['data10'] = args.cantons
	infobox_args['label11'] = 'Prefectures'
	infobox_args['data11'] = args.prefectures
	infobox_args['label12'] = 'Divisions'
	infobox_args['data12'] = args.divisions
	infobox_args['label13'] = 'Oblasts'
	infobox_args['data13'] = args.oblasts
	infobox_args['label14'] = 'Districts'
	infobox_args['data14'] = args.districts
	infobox_args['label15'] = 'Parishes'
	infobox_args['data15'] = args.parishes
	infobox_args['label16'] = 'Communes'
	infobox_args['data16'] = args.communes
	infobox_args['label17'] = 'Territories'
	infobox_args['data17'] = args.territories
	infobox_args['label18'] = args.label1
	infobox_args['data18'] = args.location1
	infobox_args['label19'] = args.label2
	infobox_args['data19'] = args.location2
	infobox_args['label20'] = args.label3
	infobox_args['data20'] = args.location3
	infobox_args['label21'] = args.label4
	infobox_args['data21'] = args.location4
	infobox_args['label22'] = args.label5
	infobox_args['data22'] = args.location5
	infobox_args['label23'] = 'Subregions'
	infobox_args['data23'] = args.subregions
	infobox_args['label24'] = 'Subcounties'
	infobox_args['data24'] = args.subcounties
	infobox_args['label25'] = 'Subprefectures'
	infobox_args['data25'] = args.subprefectures
	
	if country(args) == "USA" then
		return nil
	else
		infobox_args['label25'] = 'Municipalities'
		infobox_args['data25'] = args.municipalities
		infobox_args['label27'] = 'Major cities'
		infobox_args['data27'] = args.cities
		infobox_args['label28'] = 'Towns'
		infobox_args['data28'] = args.towns
		infobox_args['label29'] = 'Villages'
		infobox_args['data29'] = args.villages
		end
	end
	
	return frame:expandTemplate ({title='Infobox', args = infobox_args})
end

function p.location(frame)
	local args = getArgs(frame)
	
	return location(args)
end

return p