Permanently protected module
From Wikipedia, the free encyclopedia


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 selftype or self.default

end



function Country:addTypesAsColor(types, color)

	for i,type in pairs(types) do

		selftype = color

	end

end



local colors = {}

do

	function colors:color(args)

		local headerType = args.headerType

		local countryArg = args.country

		local headerTypeColor = selfheaderType

		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 = selfname

		if color then return color end

		if name == 'CAN' 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.ARG = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.BEL = Country:new{default = "background:#005b8c; color:#fff;"}

		colors.BGD = Country:new{default = "background:#2C6700; color:#fff;"}

		colors.BOL = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.CHL = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.CHN = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.CRI = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.ECU = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.EST = Country:new{default = "background:#0079C1; color:#fff;"}

		colors.EUR = Country:new{default = "background:#08842C; color:#fff;"}

		colors.IND = Country:new{default = "background:#128807; color:#fff;"}

		colors.JOR = Country:new{default = "background:#0079C1; color:#fff;"}

		colors.HKG = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.ISL = Country:new{default = "background:#FFD200; border:2px solid #000;"}

		colors.MEX = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.NZL = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.SWE = Country:new{default = "background:#003F87; color:#fff;"}

		colors.URY = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.VNM = Country:new{default = "background:#003399; color:#fff;"}

	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 -- UAE

			local ARE = Country:new{default = "background:#008033; color:#fff;"}

			ARE:addTypesAsColor({"E"}, "background:#0044aa; color:#fff;")

			colors.ARE = ARE

		end -- UAE

		do -- Asian Highway Network

			local ASIA = Country:new{default = "background:#fff; border:2px solid #000;"}

			ASIA:addTypesAsColor({"AH"}, "background:#1e2c76; color:#fff;")

			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:2px 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:#fff;"}

			BIH:addTypesAsColor({"M", "B"}, "background:#0066CC; color:#fff;")

			BIH:addTypesAsColor({"R"}, "background:#FFCC33; border:2px solid #000;")

			colors.BIH = BIH

		end -- Bulgaria		

		do -- Bulgaria

			local BGR = Country:new{default = "background:#003F87; color:#fff;"}

			BGR:addTypesAsColor({"A"}, "background:#006A4D; color:#fff;")

			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;")

			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:#fff;"}

			CZE:addTypesAsColor({"D", "R"}, "background:#006A4D; color:#fff;")

			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:2px solid #af1e2d; color:#af1e2d;")

			colors.DNK = DNK

		end -- Denmark

		do -- Finland

			local FIN = Country:new{default = "background:#005eb8; color:#fff;"}

			FIN:addTypesAsColor({"E"}, "background:#009775; color:#fff;")

			colors.FIN = FIN

		end -- Finland

		do -- France

			local FRA = Country:new{default = "background:#fff; border:2px 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;")

			DEU:addTypesAsColor({"E"}, "background:#08842C; color:#fff;")

			DEU:addTypesAsColor({"Scenic"}, "background:#633A34; 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:#0079C1; color:#fff;")

			IRN:addTypesAsColor({"expressway", "road"}, "background:#00703C; color:#fff;")

			IRN:addTypesAsColor({"boulevard", "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:2px solid #000;")

			colors.IRL = IRL

		end -- Republic of Ireland

		do -- Isle of Man

			local IMN = Country:new{default = "background:#fff; border:2px solid #000;"}

			IMN:addTypesAsColor({"A", "Primary"}, "background:#00703C; color:#FFD200;")

			colors.IMN = IMN

		end -- Isle of Man

		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 -- Jamaica

			local JAM = Country:new{default = "background:#00703C; color:#fff;"}

			JAM:addTypesAsColor({"T"}, "background:#0079C1; color:#fff;")

			colors.JAM = JAM

		end -- Jamaica

        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 -- Kosovo

		do -- Nepal

			local NPL = Country:new{default = "background:#fff; border:2px solid #000;"}

			-- NPL:addTypesAsColor({"M", "Motorway", "AM", "MNamed"}, "background:#0079C1; color:#fff;")

			NPL:addTypesAsColor({"H"}, "background:#00703C; color:#fff;")

			colors.NPL = NPL

		end -- Nepal

		do -- Netherlands

			local NLD = Country:new{default = "background:#0079C1; color:#fff;"}

			NLD:addTypesAsColor({"E"}, "background:#08842C; color:#fff;")

			colors.NLD = NLD

		end -- Netherlands

		do -- Norway

			local NOR = Country:new{default = "background:#F2A900;"}

			NOR:addTypesAsColor({"E"}, "background:#00965E; color:#fff;")

			colors.NOR = NOR

		end -- Norway

		do -- Northern Ireland

			local NIR = Country:new{default = "background:#fff; border:2px solid #000;"}

			NIR:addTypesAsColor({"M", "Motorway", "AM", "MNamed"}, "background:#0079C1; color:#fff;")

			NIR:addTypesAsColor({"A", "Primary"}, "background:#00703C; color:#FFD200;")

			colors.NIR = NIR

		end -- Northern Ireland

		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:2px 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:#fff;"}

            PHL:addTypesAsColor({"AH", "Asian Highway"}, "background:#1e2c76; color:#fff;")

            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:#fff;")

			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({"E"}, "background:#13926C; color:#fff;")

			ESP:addTypesAsColor({"A", "AP", "R", "Autovia", "Autovía", "Autopista", "autovia", "autovía", "autopista"}, "background:#19408B; color:#fff;")

			ESP:addTypesAsColor({"N", "national", "nacional"}, "background:#bf0411; color:#fff;")

			ESP:addTypesAsColor({"autonomica1", "autonómica1"}, "background:#E96310; color:#000;")

			ESP:addTypesAsColor({"autonomica2", "autonómica2"}, "background:#5D3F0F; color:#fff;")

			ESP:addTypesAsColor({"autonomica3", "autonómica3"}, "background:#F4B70D; color:#000;")

			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 Kingdom

			local GBR = Country:new{default = "background:#fff; border:2px solid #000;"}

			GBR:addTypesAsColor({"M", "Motorway", "AM", "MNamed"}, "background:#0079C1; color:#fff;")

			GBR:addTypesAsColor({"A", "Primary"}, "background:#00703C; color:#FFD200;")

			colors.GBR = GBR

		end -- United Kingdom

		do -- United States

			local USA = Country:new{default = "background:#006A4D; color:#fff;"}

			USA:addTypesAsColor({"FFH", "FR", "NER", "Rec", "RE", "Park", "Pkwy", "NSB", "NFSB", "FSB", "Scenic", "SB", "Post", "Postal"}, "background:#704214; color:#fff;")

			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:#fff;"

		colors"historical" = "background:#704214; color:#fff;"

		colors"hist" = "background:#704214; color:#fff;"

		colors"scenic" = "background:#704214; color:#fff;"

		colors"decommissioned" = "background:#AAA;"

		colors"former" = "background:#AAA;"

		colors"motorway" = "background:#003DA5; color:#fff;" --for Norway 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 emptyparam 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 colorsheaderType 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
Permanently protected module
From Wikipedia, the free encyclopedia


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 selftype or self.default

end



function Country:addTypesAsColor(types, color)

	for i,type in pairs(types) do

		selftype = color

	end

end



local colors = {}

do

	function colors:color(args)

		local headerType = args.headerType

		local countryArg = args.country

		local headerTypeColor = selfheaderType

		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 = selfname

		if color then return color end

		if name == 'CAN' 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.ARG = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.BEL = Country:new{default = "background:#005b8c; color:#fff;"}

		colors.BGD = Country:new{default = "background:#2C6700; color:#fff;"}

		colors.BOL = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.CHL = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.CHN = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.CRI = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.ECU = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.EST = Country:new{default = "background:#0079C1; color:#fff;"}

		colors.EUR = Country:new{default = "background:#08842C; color:#fff;"}

		colors.IND = Country:new{default = "background:#128807; color:#fff;"}

		colors.JOR = Country:new{default = "background:#0079C1; color:#fff;"}

		colors.HKG = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.ISL = Country:new{default = "background:#FFD200; border:2px solid #000;"}

		colors.MEX = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.NZL = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.SWE = Country:new{default = "background:#003F87; color:#fff;"}

		colors.URY = Country:new{default = "background:#006A4D; color:#fff;"}

		colors.VNM = Country:new{default = "background:#003399; color:#fff;"}

	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 -- UAE

			local ARE = Country:new{default = "background:#008033; color:#fff;"}

			ARE:addTypesAsColor({"E"}, "background:#0044aa; color:#fff;")

			colors.ARE = ARE

		end -- UAE

		do -- Asian Highway Network

			local ASIA = Country:new{default = "background:#fff; border:2px solid #000;"}

			ASIA:addTypesAsColor({"AH"}, "background:#1e2c76; color:#fff;")

			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:2px 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:#fff;"}

			BIH:addTypesAsColor({"M", "B"}, "background:#0066CC; color:#fff;")

			BIH:addTypesAsColor({"R"}, "background:#FFCC33; border:2px solid #000;")

			colors.BIH = BIH

		end -- Bulgaria		

		do -- Bulgaria

			local BGR = Country:new{default = "background:#003F87; color:#fff;"}

			BGR:addTypesAsColor({"A"}, "background:#006A4D; color:#fff;")

			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;")

			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:#fff;"}

			CZE:addTypesAsColor({"D", "R"}, "background:#006A4D; color:#fff;")

			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:2px solid #af1e2d; color:#af1e2d;")

			colors.DNK = DNK

		end -- Denmark

		do -- Finland

			local FIN = Country:new{default = "background:#005eb8; color:#fff;"}

			FIN:addTypesAsColor({"E"}, "background:#009775; color:#fff;")

			colors.FIN = FIN

		end -- Finland

		do -- France

			local FRA = Country:new{default = "background:#fff; border:2px 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;")

			DEU:addTypesAsColor({"E"}, "background:#08842C; color:#fff;")

			DEU:addTypesAsColor({"Scenic"}, "background:#633A34; 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:#0079C1; color:#fff;")

			IRN:addTypesAsColor({"expressway", "road"}, "background:#00703C; color:#fff;")

			IRN:addTypesAsColor({"boulevard", "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:2px solid #000;")

			colors.IRL = IRL

		end -- Republic of Ireland

		do -- Isle of Man

			local IMN = Country:new{default = "background:#fff; border:2px solid #000;"}

			IMN:addTypesAsColor({"A", "Primary"}, "background:#00703C; color:#FFD200;")

			colors.IMN = IMN

		end -- Isle of Man

		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 -- Jamaica

			local JAM = Country:new{default = "background:#00703C; color:#fff;"}

			JAM:addTypesAsColor({"T"}, "background:#0079C1; color:#fff;")

			colors.JAM = JAM

		end -- Jamaica

        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 -- Kosovo

		do -- Nepal

			local NPL = Country:new{default = "background:#fff; border:2px solid #000;"}

			-- NPL:addTypesAsColor({"M", "Motorway", "AM", "MNamed"}, "background:#0079C1; color:#fff;")

			NPL:addTypesAsColor({"H"}, "background:#00703C; color:#fff;")

			colors.NPL = NPL

		end -- Nepal

		do -- Netherlands

			local NLD = Country:new{default = "background:#0079C1; color:#fff;"}

			NLD:addTypesAsColor({"E"}, "background:#08842C; color:#fff;")

			colors.NLD = NLD

		end -- Netherlands

		do -- Norway

			local NOR = Country:new{default = "background:#F2A900;"}

			NOR:addTypesAsColor({"E"}, "background:#00965E; color:#fff;")

			colors.NOR = NOR

		end -- Norway

		do -- Northern Ireland

			local NIR = Country:new{default = "background:#fff; border:2px solid #000;"}

			NIR:addTypesAsColor({"M", "Motorway", "AM", "MNamed"}, "background:#0079C1; color:#fff;")

			NIR:addTypesAsColor({"A", "Primary"}, "background:#00703C; color:#FFD200;")

			colors.NIR = NIR

		end -- Northern Ireland

		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:2px 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:#fff;"}

            PHL:addTypesAsColor({"AH", "Asian Highway"}, "background:#1e2c76; color:#fff;")

            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:#fff;")

			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({"E"}, "background:#13926C; color:#fff;")

			ESP:addTypesAsColor({"A", "AP", "R", "Autovia", "Autovía", "Autopista", "autovia", "autovía", "autopista"}, "background:#19408B; color:#fff;")

			ESP:addTypesAsColor({"N", "national", "nacional"}, "background:#bf0411; color:#fff;")

			ESP:addTypesAsColor({"autonomica1", "autonómica1"}, "background:#E96310; color:#000;")

			ESP:addTypesAsColor({"autonomica2", "autonómica2"}, "background:#5D3F0F; color:#fff;")

			ESP:addTypesAsColor({"autonomica3", "autonómica3"}, "background:#F4B70D; color:#000;")

			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 Kingdom

			local GBR = Country:new{default = "background:#fff; border:2px solid #000;"}

			GBR:addTypesAsColor({"M", "Motorway", "AM", "MNamed"}, "background:#0079C1; color:#fff;")

			GBR:addTypesAsColor({"A", "Primary"}, "background:#00703C; color:#FFD200;")

			colors.GBR = GBR

		end -- United Kingdom

		do -- United States

			local USA = Country:new{default = "background:#006A4D; color:#fff;"}

			USA:addTypesAsColor({"FFH", "FR", "NER", "Rec", "RE", "Park", "Pkwy", "NSB", "NFSB", "FSB", "Scenic", "SB", "Post", "Postal"}, "background:#704214; color:#fff;")

			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:#fff;"

		colors"historical" = "background:#704214; color:#fff;"

		colors"hist" = "background:#704214; color:#fff;"

		colors"scenic" = "background:#704214; color:#fff;"

		colors"decommissioned" = "background:#AAA;"

		colors"former" = "background:#AAA;"

		colors"motorway" = "background:#003DA5; color:#fff;" --for Norway 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 emptyparam 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 colorsheaderType 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

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook