Module:Infobox road/locations

From Chalo Chatu, Zambia online encyclopedia
< Module:Infobox road
Revision as of 08:46, 24 July 2017 by Chalochatu (talk | contribs) (Created page with "local p = {} local function countries(args, country) local data = {EUR = "no", ASIA = "no", default = "yes"} local yesOrNo = data[country] or data.default if yesO...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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"} if args.communities then return "Autonomous communities:", args.communities end local yesOrNo = data[country] or data.default if yesOrNo == "no" then return "Regions:", args.regions else return "Regions:", 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", PHL = "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 = "Primary
destinations
:" else label = "Primary
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 = "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(frame)

   local pframe = frame:getParent()
   local config = frame.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 = "Countries:", label3 = "States:", label4 = "Provinces:", label7 = "Divisions:", label8 = "Major cities:",
                       label9 = "Towns:", label10 = "Villages:", child = "yes", decat = "yes", labelstyle = "text-align:right", title = "Location"}
   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)
   parameters.label2, 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