Прејди на содржината

Модул:Infobox road/locations

Од Википедија — слободната енциклопедија

Документацијата за овој модул можете да ја создадете на Модул:Infobox road/locations/док

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"}
    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
    elseif districts then
        return "Окрузи:", districts
    elseif municipalities then
        return "Општини:", municipalities
    elseif parishes then
        return "Околии:", parishes
    elseif boroughs then
        return "Месности:", boroughs
    else
        return '', nil
    end
end

local function ruralMunis(args, country)
    local label
    local province = country or ''
    if province == "AB" then
        label = "Посебни<br>и рурални<br>општини:"
    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 = "Главни<br>одредишта:"
    else
        label = "Главни<br>одредишта:"
    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 = "[[Самоуправни подрачја во Јужна Австралија|СУП]]", VIC = "[[Самоуправни подрачја во Викторија|СУП]]", NSW = "[[Самоуправни подрачја во Нов Јужен Велс|СУП]]",
                    QLD = "[[Самоуправни подрачја во Квинсленд|СУП]]", NT = "[[Самоуправни подрачја во Северната Територија|СУП]]",
                    WA = "[[Local government areas of Western Australia|СУП]]", TAS = "[[Самоуправни подрачја во Тасманија|СУП]]", 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 "[[Месна управа во Австралија|СУП]]"
        return label, args.lga
    else
        return '', nil
    end
end

local function locations(args, country)
    local labels = {highway = "Поважни нас. места:", ["rural road"] = "Поважни нас. места:", freeway = "Поважни населби:", ["city highway"] = "Поважни населби:", road = "Поважни населби:", street = "Населба:"}
    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 "Главни<br>одредишта:"
        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 = "Земји:", label2 = "Области:", label3 = "Сој. држави:", label4 = "Покраини:", label7 = "Оддели:", label8 = "Поважни градови:",
                        label9 = "Паланки:", label10 = "Села:", child = "yes", decat = "yes", labelstyle = "text-align:right", title = "Местоположба"}
    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)
    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