Modul:Infobox road/locations

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas

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 "Komuniti autonomi:", args.communities
	end
	local yesOrNo = data[country] or data.default
	if yesOrNo == "no" then
		return "Kawasan:", args.regions
	else
		return "Kawasan:", 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 = {CAN = "no", 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 "Kaunti", counties
    elseif districts then
        return "Daerah", districts
    elseif municipalities then
        return "Perbandaran", municipalities
    elseif parishes then
        return "Kariah gereja", parishes
    elseif boroughs then
        return "Wilayah/daerah perbandaran", boroughs
    else
        return '', nil
    end
end

local function ruralMunis(args, country)
    local label
    local province = country or ''
    if province == "AB" then
        label = "Perbandaran<br>khusus dan<br>luar bandar"
    else
        label = "Perbandaran<br>luar bandar"
    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 = "[[Jalan-jalan di United Kingdom#Destinasi utama|Destinasi<br>utama]]"
    else
        label = "Destinasi<br>utama"
    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 = "[[Kawasan kerajaan tempatan Australia Selatan|LGA(s)]]", VIC = "[[Kerajaan tempatan di Victoria|LGA(s)]]", NSW = "[[Kawasan kerajaan tempatan New South Wales|LGA(s)]]",
                    QLD = "[[Kawasan kerajaan tempatan Queensland|LGA(s)]]", NT = "[[Kawasan kerajaan tempatan the Wilayah Utara|LGA(s)]]",
                    WA = "[[Kawasan kerajaan tempatan Australia Barat|LGA(s)]]", TAS = "[[Kawasan kerajaan tempatan 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 "[[Kerajaan tempatan di Australia|LGA(s)]]"
        return label, args.lga
    else
        return '', nil
    end
end

local function locations(args, country)
    local labels = {highway = "Penempatan utama", ["jalan luar bandar"] = "Penempatan utama", freeway = "Pinggir bandar utama", ["lebuh raya bandar"] = "Pinggir bandar utama", road = "Pinggir bandar utama", street = "Pinggir bandar"}
    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 "Destinasi<br>utama"
        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 = "Negara", label3 = "Negeri", label4 = "Wilayah", label7 = "Bahagian", label8 = "Bandar utama",
                        label9 = "Bandar", label10 = "Kampung", child = "yes", decat = "yes", labelstyle = "text-align:right", title = "Lokasi"}
    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