Module:Infobox road/color
local p = {}
Country = {}
function Country:new(obj)
obj = obj or {}
setmetatable(obj, self)
self.__index = self
return obj
end
function Country:color(args)
local type = args.type
return self[type] or self.default
end
function Country:addTypesAsColor(types, color)
for i,type in pairs(types) do
self[type] = color
end
end
local colors = {}
do
function colors:color(args)
local headerType = args.headerType
local countryArg = args.country
local headerTypeColor = self[headerType]
if headerTypeColor then return headerTypeColor end
local success, country = pcall(self.country, self, countryArg)
if not(success) then
return 'background:#cedff2;'
else
return country:color(args)
end
end
function colors:country(name)
local color = self[name]
if color then return color end
if name == 'CAN' or name == 'GBR' then
local module = require(string.format("Module:Infobox road/color/%s", name))
return module.colors
else
error("Country not included", 0)
end
end
do -- Single-color countries
colors.BEL = Country:new{default = "background:#0071B3; color:#fff;"}
colors.BGD = Country:new{default = "background:#2C6700; color:white;"}
colors.CHL = Country:new{default = "background:#006A4D; color:#fff;"}
colors.CHN = Country:new{default = "background:#006A4D; color:white;"}
colors.ECU = Country:new{default = "background:#006A4D; color:#fff;"}
colors.EST = Country:new{default = "background:#0079C1; color:white;"}
colors.EUR = Country:new{default = "background:#08842C; color:#fff;"}
colors.JOR = Country:new{default = "background:#0079C1; color:white;"}
colors.HKG = Country:new{default = "background:#006A4D; color:#fff;"}
colors.ISL = Country:new{default = "background:#FFD200; border:1px solid #000;"}
colors.MEX = Country:new{default = "background:#006A4D; color:white;"}
colors.NZL = Country:new{default = "background:#006A4D; color:#fff;"}
colors.URY = Country:new{default = "background:#006A4D; color:white;"}
colors.VNM = Country:new{default = "background:#003399; color:white;"}
end -- Single-color countries
do -- Multi-color countries
do -- Albania
local ALB = Country:new{default = "background:#00408B; color:#fff;"}
ALB:addTypesAsColor({"A"}, "background:#08842C; color:#fff;")
colors.ALB = ALB
end -- Albania
do -- Asian Highway Network
local ASIA = Country:new{default = "background:#fff; border:1px solid #000;"}
ASIA:addTypesAsColor({"AH"}, "background:#1e2c76; color:white;")
colors.ASIA = ASIA
end -- Asian Highway Network
do -- Australia
local AUS = Country:new{default = "background:#3A7119; color:#FFE133;"}
AUS:addTypesAsColor({"freeway"}, "background:#D2E2F9;")
AUS:addTypesAsColor({"highway", "city highway"}, "background:#E9F9D2;")
AUS:addTypesAsColor({"road", "rural road"}, "background:#FFFFE0;")
AUS:addTypesAsColor({"street"}, "background:#F9E2D2;")
AUS:addTypesAsColor({"track"}, "background:#fee8ab;")
colors.AUS = AUS
end -- Australia
do -- Austria
local AUT = Country:new{default = "background:#fff; border:1px solid #000;"}
AUT:addTypesAsColor({"A", "S", "B"}, "background:#276FB7; color:#fff;")
colors.AUT = AUT
end -- Austria
do -- Bosnia and Herzegovina
local BIH = Country:new{default = "background:#0B8F4B; color:white;"}
BIH:addTypesAsColor({"M", "B"}, "background:#0066CC; color:white;")
BIH:addTypesAsColor({"R"}, "background:#FFCC33; border:1px solid #000;")
colors.BIH = BIH
end -- Bulgaria
do -- Bulgaria
local BGR = Country:new{default = "background:#003F87; color:white;"}
BGR:addTypesAsColor({"A"}, "background:#006A4D; color:white;")
colors.BGR = BGR
end -- Bulgaria
do -- Croatia
local HRV = Country:new{default = "background:#cedff2;"}
HRV:addTypesAsColor({"E", "A"}, "background:#08842C; color:#fff;")
HRV:addTypesAsColor({"D"}, "background:#0066CC; color:#fff;")
HRV:addTypesAsColor({"Z"}, "background:#FFCC33; color:black;")
colors.HRV = HRV
end -- Croatia
do -- Cyprus
local CYP = Country:new{default = "background:#003F87; color:#FFC000;"}
CYP:addTypesAsColor({"A"}, "background:#005024; color:#FFC000;")
colors.CYP = CYP
end -- Cyprus
do -- Czech Republic
local CZE = Country:new{default = "background:#003F87; color:white;"}
CZE:addTypesAsColor({"D", "R"}, "background:#006A4D; color:white;")
colors.CZE = CZE
end -- Czech Republic
do -- Denmark
local DNK = Country:new{default = "background:#039; color:#fff;"}
DNK:addTypesAsColor({"E", "M"}, "background:#006A4D; color:#fff;")
DNK:addTypesAsColor({"S"}, "background:#fff; border:1px solid #af1e2d; color:#af1e2d;")
colors.DNK = DNK
end -- Denmark
do -- France
local FRA = Country:new{default = "background:#fff; border:1px solid #000;"}
FRA:addTypesAsColor({"A"}, "background:#0079C1; color:#fff;")
FRA:addTypesAsColor({"N"}, "background:#006A4D; color:#fff;")
FRA:addTypesAsColor({"E"}, "background:#28961e; color:#fff;")
colors.FRA = FRA
colors.MTQ = FRA
colors.DZA = FRA
end -- France
do -- Georgia
local GEO = Country:new{default = "background:#cedff2;"}
GEO:addTypesAsColor({"A", "International"}, "background:#039; color:#fff;")
colors.GEO = GEO
end -- Georgia
do -- Germany
local DEU = Country:new{default = "background:#cedff2;"}
DEU:addTypesAsColor({"A", "Autobahn"}, "background:#003ABD; color:#fff;")
DEU:addTypesAsColor({"B", "Bundesstraße", "Bundesstrasse"}, "background:#FC3; color:black")
DEU:addTypesAsColor({"E"}, "background:#08842C; color:#fff;")
colors.DEU = DEU
end -- Germany
do -- Ghana
local GHA = Country:new{default = "background:#006A4D; color:#FFF;"}
GHA:addTypesAsColor({"N"}, "background:#0079C1; color:#FFF;")
colors.GHA = GHA
end -- Ghana
do -- Greece
local GRC = Country:new{default = "background:#0079C1; color:#FFF;"}
GRC:addTypesAsColor({"A"}, "background:#006A4D; color:#FFF;")
colors.GRC = GRC
end -- Greece
do -- Hungary
local HUN = Country:new{default = "background:#006A4D; color:#fff;"}
HUN:addTypesAsColor({"M"}, "background:#0079C1; color:#fff;")
colors.HUN = HUN
end -- Hungary
do -- Iran
local IRN = Country:new{default = "background:#cedff2;"}
IRN:addTypesAsColor({"freeway"}, "background:#06c; color:#fff;")
IRN:addTypesAsColor({"expressway"}, "background:#22B14C; color:#fff;")
IRN:addTypesAsColor({"road"}, "background:#22B14C; color:#fff;")
IRN:addTypesAsColor({"boulevard"}, "background:#fff; color:#000;")
IRN:addTypesAsColor({"street"}, "background:#fff; color:#000;")
colors.IRN = IRN
end -- Iran
do -- Republic of Ireland
local IRL = Country:new{default = "background:#cedff2;"}
IRL:addTypesAsColor({"M"}, "background:#0079C1; color:#fff;")
IRL:addTypesAsColor({"N"}, "background:#00703C; color:#FFD200;")
IRL:addTypesAsColor({"R"}, "background:#fff; border:1px solid #000;")
colors.IRL = IRL
end -- Republic of Ireland
do -- Israel
local ISR = Country:new{default = "background:#007E00; color:#fff;"}
ISR:addTypesAsColor({"Fwy", "Freeway", "Dual"}, "background:#0000FE; color:#fff;")
colors.ISR = ISR
end -- Israel
do -- Italy
local ITA = Country:new{default = "background:#cedff2;"}
ITA:addTypesAsColor({"A"}, "background:#08842C; color:#fff;")
ITA:addTypesAsColor({"RA"}, "background:#08842C; color:#fff;")
ITA:addTypesAsColor({"SS"}, "background:#003F87; color:#fff;")
ITA:addTypesAsColor({"E"}, "background:#08842C; color:#fff;")
colors.ITA = ITA
end -- Italy
do -- Kosovo
local KOS = Country:new{default = "background:#0066cc; color:#fff;"}
KOS:addTypesAsColor({"R"}, "background:#009933; color:#fff;")
KOS:addTypesAsColor({"E"}, "background:#08842C; color:#fff;")
colors.KOS = KOS
end -- Netherlands
do -- Netherlands
local NLD = Country:new{default = "background:#0079C1; color:#fff;"}
NLD:addTypesAsColor({"E"}, "background:#08842C; color:#fff;")
colors.NLD = NLD
end -- Netherlands
do -- Malaysia
local MYS = Country:new{default = "background:#0079C1; color:#fff;"}
MYS:addTypesAsColor({"E"}, "background:#006A4D; color:#fff;")
colors.MYS = MYS
end -- Malaysia
do -- Morocco
local MAR = Country:new{default = "background:#fff; border:1px solid #000;"}
MAR:addTypesAsColor({"A"}, "background:#0079C1; color:#fff;")
MAR:addTypesAsColor({"Motorway"}, "background:#0079C1; color:#fff;")
colors.MAR = MAR
end -- Morocco
do -- Pakistan
local PAK = Country:new{default = "background:#0066cc; color:#fff;"}
PAK:addTypesAsColor({"M"}, "background:#22B14C; color:#fff;")
PAK:addTypesAsColor({"E"}, "background:#F5C31D; color:#000;")
colors.PAK = PAK
end -- Pakistan
do -- Philippines
local PHL = Country:new{default = "background:#093; color:white;"}
PHL:addTypesAsColor({"AH", "Asian Highway"}, "background:#704214; color:white;")
colors.PHL = PHL
end -- Philippines
do -- Poland
local POL = Country:new{default = "background:#006A4D; color:#fff;"}
POL:addTypesAsColor({"A", "S"}, "background:#0079C1; color:#fff;")
colors.POL = POL
end --Poland
do -- Russia
local RUS = Country:new{default = "background:#0d69e1; color:#fff;"}
RUS:addTypesAsColor({"E"}, "background:#00a500; color:#fff;")
RUS:addTypesAsColor({"AH"}, "background:#00004e; color:white;")
colors.RUS = RUS
end --Russia
do -- Slovakia
local SVK = Country:new{default = "background:#0079C1; color:#fff;"}
SVK:addTypesAsColor({"D", "R"}, "background:#006A4D; color:#fff;")
colors.SVK = SVK
end -- Slovakia
do -- South Africa
local ZAF = Country:new{default = "background:#006A4D; color:#FFF;"}
ZAF:addTypesAsColor({"M", "N"}, "background:#0079C1; color:#FFF;")
colors.ZAF = ZAF
end -- South Africa
do -- Spain
local ESP = Country:new{default = "background:#E8E8E8;"}
ESP:addTypesAsColor({"A", "AP", "AS"}, "background:#039; color:#fff;")
ESP:addTypesAsColor({"N"}, "background:#e41408; color:#fff;")
ESP:addTypesAsColor({"E"}, "background:#08842C; color:#fff;")
colors.ESP = ESP
end -- Spain
do -- Sri Lanka
local LKA = Country:new{default = "background:#006A4D; color:#fff;"}
LKA:addTypesAsColor({"E"}, "background:#0079C1; color:#fff;")
LKA:addTypesAsColor({"A"}, "background:#006A4D; color:#fff;")
colors.LKA = LKA
end -- Sri Lanka
do -- Switzerland
local CHE = Country:new{default = "background:#cedff2;"}
CHE:addTypesAsColor({"E"}, "background:#08842C; color:#fff;")
colors.CHE = CHE
end -- Switzerland
do -- Thailand
local THA = Country:new{default = "background:#006A4D; color:#fff;"}
THA:addTypesAsColor({"AH", "T"}, "background:#003F87; color:#fff;")
colors.THA = THA
end -- Thailand
do -- Turkey
local TUR = Country:new{default = "background:#006A4D; color:#fff;"}
TUR:addTypesAsColor({"state", "D"}, "background:#003F87; color:#fff;")
TUR:addTypesAsColor({"E"}, "background:#08842C; color:#fff;")
colors.TUR = TUR
end -- Turkey
do -- Ukraine
local UKR = Country:new{default = "background:#0000cc; color:#fff;"}
UKR:addTypesAsColor({"E"}, "background:#009900; color:#fff;")
colors.UKR = UKR
end -- Ukraine
do -- United States
local USA = Country:new{default = "background:#006A4D; color:white;"}
USA:addTypesAsColor({"FFH", "FR", "NER", "Rec", "RE", "Park"}, "background:#704214; color:white;")
colors.USA = USA
end -- United States
end -- Multi-color countries
do -- Built-in header types
colors["under construction"] = "background:#fc6;"
colors["const"] = "background:#fc6;"
colors["uc"] = "background:#fc6;"
colors["historic"] = "background:#704214; color:white;"
colors["historical"] = "background:#704214; color:white;"
colors["hist"] = "background:#704214; color:white;"
colors["scenic"] = "background:#704214; color:white;"
colors["decommissioned"] = "background:#AAA;"
colors["former"] = "background:#AAA;"
colors["minor"] = "background:#fff; border:1px solid #000;" --for UK A roads only
end -- Built-in header types
end
function p._color(args)
return colors:color(args)
end
function p.color(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 function emptyParam(param)
local empty = {[''] = true, ['¬'] = true}
if not(param) or empty[param] then
return nil
else
return param
end
end
local state = config.state or args.state
state = emptyParam(state)
local province = config.province or args.province
province = emptyParam(province)
local type = config.type or args.type
local subtype = config.subtype or args.subtype or nil
local headerType = args.header_type or config.header_type
headerType = emptyParam(headerType)
if headerType then
headerType = string.lower(headerType)
end
local countryArg = config.country or args.country
countryArg = emptyParam(countryArg)
local country = countryArg
if not(country) then
if colors[headerType] then
country = ''
else
local stateParam = state or province
if not(stateParam) then
country = ''
else
local countryMask = require "Module:Infobox road/meta/mask/country"
country = countryMask._country(stateParam, countryArg)
end
end
end
return p._color{country=country, state=state, province=province, type=type, subtype=subtype, headerType=headerType}
end
return p
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.