Module:Highway shields/USA
Documentation for this module may be created at Module:Highway shields/USA/doc
local p = {}
local shieldDefs = require "Module:Highway shields/defs"
local Country = shieldDefs.Country
local Shield = shieldDefs.Shield
local Type = shieldDefs.Type
local UniqueType = shieldDefs.UniqueType
local Alias = shieldDefs.Alias
local ShieldPreprocessors = shieldDefs.ShieldPreprocessors
do
local statesModule = require "Module:U.S. States"
local mapping = statesModule.stateAbbrToName
function ShieldPreprocessors.stateName(args)
args.stateName = mapping[args.state]
end
end
local shields = Country:new()
do -- Definitions
-- BEGIN: Function definitions
local function stateRoute(state, shield, types)
local stateType = shields:uniqueType(state)
stateType:update{state = state, shield = shield}
for i,typeStr in ipairs(types) do
shields:type(typeStr):addShield(state, shield)
end
end
-- END: Function definitions
-- BEGIN: Type definitions
do -- Interstates
local type = Type:new{formatStr = "I-%s.svg"}
shields:addType("I", type)
shields:addType("Interstate", type)
local function defStates(states)
for i,state in ipairs(states) do
type:addShield(state, Shield:new{formatStr = string.format("I-%s (%s).svg", "%s", state)})
end
end
local defaultStateSpecific = {"AL", "AZ", "CA", "IA", "KS", "MO", "NV", "NM", "OK", "SC", "WV"}
defStates(defaultStateSpecific)
type:addShield("AR", Shield:new{formatStr = "I-%s (AR) Metric.svg"}) -- Arkansas
type:addShield("HI", Shield:new{formatStr = "I-H%s.svg"}) -- Hawaii
type:addShield("PR", Shield:new{formatStr = "I-PR%s.svg"}) -- Puerto Rico
do -- New York
local exceptions = {["90N"] = "I-90N.svg"}
local by100 = {["less"] = "I-%s.svg", ["more"] = "I-%s (long).svg"}
type:addShield("NY", Shield:new{exceptions = exceptions, by100 = by100})
end -- New York
do -- Big shield
local big = Shield:new{formatStr = "I-%s (big).svg"}
type:addShield("MT", big) -- Montana
type:addShield("OR", big) -- Oregon
type:addShield("UT", big) -- Utah
type:addShield("WA", big) -- Washington
end -- Big shield
end -- Interstates
do -- 1957 Interstates
local type = Type:new{formatStr = "I-%s (%s 1957).svg", formatArgs = {"route", "state"}}
shields:addType("I 1957", type)
local by100 = {["less"] = "I-%s (%s).svg", ["more"] = "I-%s (%s 1957).svg"}
local shieldCA = Shield:new{exceptions = {["80N"] = "I-80N (CA 1957).svg"}, by100 = by100, formatArgs = {"route", "state"}}
local shieldIA = Shield:new{exceptions = {["80N"] = "I-80N (IA 1957).svg"}, by100 = by100, formatArgs = {"route", "state"}}
type:addShield("CA", shieldCA) -- California
type:addShield("IA", shieldIA) -- Iowa
end -- 1957 Interstates
shields:addType("Future", Shield:new{formatStr = "I-%s (Future).svg"}) -- Future Interstates
do -- Business Loops
local exceptions = {["496"] = "CapitolLoop.svg"}
shields:addType("BL", Shield:new{formatStr = "Business Loop %s.svg", exceptions = exceptions})
end -- Business Loops
shields:addType("BS", Shield:new{formatStr = "Business Spur %s.svg"}) -- Business Spurs
shields:addType("BL 1957", Shield:new{formatStr = "Business Loop %s (1957).svg"}) -- 1957 Business Loops
shields:addType("BS 1957", Shield:new{formatStr = "Business Spur %s (1957).svg"}) -- 1957 Business Spurs
do -- U.S. Routes
local typeExceptions = {["141"] = "US 141 (WI).svg", ["151"] = "US 151 (WI).svg", ["218"] = "US 218 (IA).svg"}
local type = Type:new{formatStr = "US %s.svg", exceptions = typeExceptions}
shields:addType("US", type)
do -- Arkansas
local subtypes = {["Bus"] = "US %sB.svg", ["Conn"] = "US %sY.svg", ["Spr"] = "US %sS.svg",
["Spur"] = "US %sS.svg", ["Trk"] = "US %sT.svg", ["Truck"] = "US %sT.svg"}
local by100 = {["less"] = "US %s (1961).svg", ["more"] = "US %s (AR).svg"}
type:addShield("AR", Shield:new{subtypes = subtypes, by100 = by100})
end -- Arkansas
type:addShield("CA", Shield:new{formatStr = "US %s (CA).svg"}) -- California
type:addShield("IA", Shield:new{formatStr = "US %s (IA).svg"}) -- Iowa
do -- Connecticut
local exceptions = {["1A"] = "US 1A.svg", ["6A"] = "US 6A.svg"}
local by100 = {["less"] = "US %s.svg", ["more"] = "US %s (NH).svg"}
type:addShield("CT", Shield:new{exceptions = exceptions, by100 = by100})
end -- Connecticut
do -- Maryland
local subtypes = {["Bus"] = "US %s Business (MD).svg"}
type:addShield("MD", Shield:new{subtypes = subtypes})
end -- Maryland
do -- New Hampshire
local subtypes = {["Byp"] = "US %s Bypass.svg"}
type:addShield("NH", Shield:new{by100 = {["more"] = "US %s (NH).svg", ["less"] = "US %s.svg"}, subtypes = subtypes})
end -- New Hampshire
do -- New Jersey
local exceptions = {["1/9"] = "US 1-9.svg"}
type:addShield("NJ", Shield:new{exceptions = exceptions})
end -- New Jersey
do -- Oklahoma
local subtypes = {["Scenic"] = "Scenic US %s.svg"}
type:addShield("OK", Shield:new{subtypes = subtypes})
end -- Oklahoma
type:addShield("MN", Shield:new{by100 = {["more"] = "US %s (MN).svg", ["less"] = "US %s.svg"}}) -- Minnesota
type:addShield("WI", Shield:new{by100 = {["more"] = "US %s (WI).svg", ["less"] = "US %s.svg"}}) -- Wisconsin
do -- Aliases
shields:addType("US-Alt", Alias:new{type = type, subtype = "Alt"})
shields:addType("US-Bus", Alias:new{type = type, subtype = "Bus"})
shields:addType("US-Byp", Alias:new{type = type, subtype = "Byp"})
shields:addType("US-Conn", Alias:new{type = type, subtype = "Conn"})
shields:addType("US-Scenic", Alias:new{type = type, subtype = "Scenic"})
shields:addType("US-Spur", Alias:new{type = type, subtype = "Spur"})
shields:addType("US-Truck", Alias:new{type = type, subtype = "Truck"})
end -- Aliases
end -- U.S. Routes
do -- Historic U.S. Routes
local stateName = ShieldPreprocessors.stateName
shields:addType("US 1926", Shield:new{formatStr = "US %s %s 1926.svg", formatArgs = {"route", "stateName"}, preprocessors = {stateName}}) -- 1926 U.S. Routes
shields:addType("US 1948", Shield:new{formatStr = "US %s %s 1948.svg", formatArgs = {"route", "stateName"}, preprocessors = {stateName}}) -- 1948 U.S. Routes
do -- 1950 U.S. Routes
local type = Type:new{formatStr = "US %s %s 1950.svg", formatArgs = {"route", "stateName"}, preprocessors = {stateName}}
shields:addType("US 1950", type)
local NCAltShield = "US %sA North Carolina 1950.svg"
local subtypes = {["Alt"] = NCAltShield, ["Alternate"] = NCAltShield}
type:addShield("NC", Shield:new{subtypes = subtypes})
end -- 1950 U.S. Routes
shields:addType("US 1961", Shield:new{formatStr = "US %s 1961.svg"}) -- 1961 U.S. Routes
end -- Historic U.S. Routes
do -- State Routes
do -- Alabama
local shield = Shield:new{formatStr = "Alabama %s.svg"}
stateRoute("AL", shield, {"SR"})
end -- Alabama
do -- Alaska
local shield = Shield:new{formatStr = "Alaska %s shield.svg"}
stateRoute("AK", shield, {})
end -- Alaska
do -- Arizona
local exceptions = {["101"] = "Arizona Loop 101.svg", ["202"] = "Arizona Loop 202.svg", ["303"] = "Arizona Loop 303.svg"}
local shield = Shield:new{formatStr = "Arizona %s.svg", exceptions = exceptions}
local types = {"SR", "Loop"}
stateRoute("AZ", shield, types)
shields:type("SR-Spur"):addShield("AZ", Shield:new{formatStr = "Arizona %sS.svg"})
shields:type("US-Hist"):addShield("AZ", Shield:new{formatStr = "US %s (historic).svg"})
end -- Arizona
do -- Arkansas
local exceptions = {["917"] = "Arkansas 917-1.svg", ["980"] = "Arkansas 980(Airport).svg"}
local subtypes = {["Bus"] = "Arkansas %sB.svg", ["Spur"] = "Arkansas %sS.svg", ["Truck"] = "Arkansas %sT.svg"}
local shield = Shield:new{formatStr = "Arkansas %s.svg", exceptions = exceptions, subtypes = subtypes}
stateRoute("AR", shield, {"Hwy"})
shields:type("Hwy-Bus"):addShield("AR", Alias:new{type = shield, subtype="Bus"})
shields:uniqueType("GRR"):update{state = "AR"}
end -- Arkansas
do -- California
local shield = Shield:new{formatStr = "California %s.svg"}
stateRoute("CA", shield, {"SR"})
end -- California
do -- Colorado
local shield = Shield:new{formatStr = "Colorado %s.svg"}
stateRoute("CO", shield, {"SH"})
shields:type("E"):addShield("CO", Shield:new{formatStr = "E%s.svg"})
end -- Colorado
do -- Connecticut
local shield = Shield:new{formatStr = "Connecticut Highway %s.svg"}
stateRoute("CT", shield, {"Route"})
do -- Connecticut Turnpike
local shield = Shield:new{formatStr = "Conn Tpk.gif", formatArgs = {}}
shields:type("Turnpike"):addShield("CT", shield)
shields:uniqueType("CTTP"):update{state = "CT", shield = shield}
end -- Connecticut Turnpike
do -- Merritt Parkway
local shield = Shield:new{formatStr = "Merritt Pkwy Shield.svg", formatArgs = {}}
shields:uniqueType("Merritt"):update{state = "CT", shield = shield}
end -- Merritt Parkway
end -- Connecticut
do -- Delaware
local shield = Shield:new{formatStr = "Elongated circle %s.svg"}
stateRoute("DE", shield, {"SR"})
do -- Bannered routes
shields:type("SR-Alt"):addShield("DE", shield)
shields:type("SR-Bus"):addShield("DE", shield)
shields:type("SR-Truck"):addShield("DE", shield)
local stateType = shields:uniqueType("DE")
shields:addType("DE-Alt", stateType)
shields:addType("DE-Bus", stateType)
shields:addType("DE-Truck", stateType)
end -- Bannered routes
do -- Delaware Turnpike
local shield = Shield:new{formatStr = "Delaware Turnpike logo.gif", formatArgs = {}}
shields:type("Turnpike"):addShield("DE", shield)
shields:uniqueType("DETP"):update{state = "DE", shield = shield}
end -- Delaware Turnpike
do -- New Jersey Turnpike
shields:uniqueType("NJTP"):update{state = "DE"}
end -- New Jersey Turnpike
end -- Delaware
do -- District of Columbia
local shield = Shield:new{formatStr = "DC-%s.svg"}
stateRoute("DC", shield, {})
end -- District of Columbia
do -- Florida
local shield = Shield:new{formatStr = "Florida %s.svg"}
stateRoute("FL", shield, {"SR"})
do -- Bannered routes
shields:type("SR-Bus"):addShield("FL", shield)
shields:type("SR-Spur"):addShield("FL", shield)
shields:type("SR-Truck"):addShield("FL", shield)
end -- Bannered routes
do -- Florida's Turnpike
local shield = Shield:new{formatStr = "Florida's Turnpike shield.png", formatArgs = {}}
shields:type("Turnpike"):addShield("FL", shield)
shields:uniqueType("FLTP"):update{state = "FL", shield = shield}
shields:uniqueType("HEFT"):update{state = "FL", shield = shield}
end -- Florida's Turnpike
do -- Toll roads
local shield = Shield:new{formatStr = "Toll Florida %s.svg"}
shields:type("Toll"):addShield("FL", shield)
end -- Toll roads
end -- Florida
do -- Georgia
local subtypes = {["Alt"] = "Georgia %s Alternate.svg", ["Bus"] = "Georgia %s Business.svg", ["Byp"] = "Georgia %s Bypass.svg",
["Conn"] = "Georgia %s Connector.svg", ["Loop"] = "Georgia %s Loop.svg", ["Spur"] = "Georgia %s Spur.svg"}
local shield = Shield:new{formatStr = "Georgia %s.svg", subtypes = subtypes}
stateRoute("GA", shield, {"SH", "SR", "Route"})
do -- Bannered routes
do -- Alternate
local alias = Alias:new{type = shield, subtype = "Alt"}
shields:type("SR-Alt"):addShield("GA", alias)
shields:uniqueType("GA-Alt"):update{state = "GA", shield = alias}
end -- Alternate
shields:type("SR-Bus"):addShield("GA", Alias:new{type = shield, subtype="Bus"})
do -- Bypass
local alias = Alias:new{type = shield, subtype = "Byp"}
shields:type("SR-Byp"):addShield("GA", alias)
shields:uniqueType("GA-Byp"):update{state = "GA", shield = alias}
end -- Bypass
do -- Connector
local alias = Alias:new{type = shield, subtype = "Conn"}
shields:type("SR-Conn"):addShield("GA", alias)
shields:uniqueType("GA-Conn"):update{state = "GA", shield = alias}
end -- Connector
shields:type("SR-Loop"):addShield("GA", Alias:new{type = shield, subtype="Loop"})
do -- Spur
local alias = Alias:new{type = shield, subtype = "Spur"}
shields:type("SR-Spur"):addShield("GA", alias)
shields:uniqueType("GA-Spur"):update{state = "GA", shield = alias}
end -- Spur
end -- Bannered routes
end -- Georgia
do -- Hawaii
local shield = Shield:new{formatStr = "HI-%s.svg"}
stateRoute("HI", shield, {"Route"})
end -- Hawaii
do -- Idaho
local subtypes = {["Scenic"] = "ID-Scenic-%s.svg"}
local shield = Shield:new{formatStr = "ID-%s.svg", subtypes = subtypes}
stateRoute("ID", shield, {"SH"})
do -- Bannered routes
shields:type("SH-Bus"):addShield("ID", shield)
shields:type("SH-Conn"):addShield("ID", shield)
shields:type("SH-Spur"):addShield("ID", shield)
local stateType = shields:uniqueType("ID")
shields:addType("ID-Bus", stateType)
shields:addType("ID-Conn", stateType)
end -- Bannered routes
do -- Washington State Routes
shields:uniqueType("WA"):update{state = "ID"}
end -- Washington State Routes
end -- Idaho
do -- Illinois
local shield = Shield:new{formatStr = "Illinois %s.svg"}
stateRoute("IL", shield, {})
do -- Elgin–O'Hare Expressway
local shield = Shield:new{formatStr = "Illinois Elgin–O'Hare Expressway.svg", formatArgs = {}}
shields:uniqueType("E-OH"):update{state = "IL", shield = shield}
end -- Elgin–O'Hare Expressway
do -- Great River Road
shields:uniqueType("GRR"):update{state = "IL"}
shields:uniqueType("GRR-Spur"):update{state = "IL"}
end -- Great River Road
do -- Chicago Skyway
local shield = Shield:new{formatStr = "Chicago Skyway logo.svg", formatArgs = {}}
shields:uniqueType("Skyway"):update{state = "IL", shield = shield}
end -- Chicago Skyway
do -- Indiana Toll Road
local type = shields:type("Toll")
local alias = Alias:new{type = type, state = "IN"}
type:addShield("IL", alias)
end -- Indiana Toll Road
shields:type("US-Hist"):addShield("IL", Shield:new{formatStr = "US %s (IL historic).svg"})
shields:uniqueType("Lincoln"):update{state = "IL"}
end -- Illinois
do -- Indiana
local shield = Shield:new{formatStr = "Indiana %s.svg"}
stateRoute("IN", shield, {"SR"})
do -- Auto trails
shields:uniqueType("Dixie"):update{state = "IN"}
shields:uniqueType("Lincoln"):update{state = "IN"}
shields:uniqueType("National"):update{state = "IN"}
end -- Auto trails
do -- Indiana Toll Road
local shield = Shield:new{formatStr = "Indiana Toll Road logo 1968.svg", formatArgs = {}}
shields:type("Toll"):addShield("IN", shield)
end -- Indiana Toll Road
end -- Indiana
do -- Iowa
local shield = Shield:new{formatStr = "Iowa %s.svg"}
stateRoute("IA", shield, {})
local stateType = shields:uniqueType("IA")
shields:addType("IA-Bus", stateType)
shields:uniqueType("GRR"):update{state = "IA"}
end -- Iowa
-- Gap
do -- Michigan (incomplete)
do -- Capitol Loop alias
local alias = Alias:new{type = shields["BL"], route = "496"}
shields:uniqueType("Capitol Loop"):update{state = "MI", shield = alias}
end -- Capitol Loop alias
end -- Michigan (incomplete)
-- Gap
do -- Montana
local shield = Shield:new{formatStr = "MT-%s.svg"}
stateRoute("MT", shield, {})
do -- Secondary
local shield = Shield:new{formatStr = "MT-sec-%s.svg"}
shields:type("Sec"):addShield("MT", shield)
end -- Secondary
end -- Montana
-- Gap
do -- Nevada
local shield = Shield:new{formatStr = "Nevada %s.svg"}
stateRoute("NV", shield, {"SR"})
do -- Clark County
local shield = Shield:new{formatStr = "Clark County Route %s NV.svg"}
shields:uniqueType("CC"):update{state = "NV", shield = shield}
end -- Clark County
do -- California State Routes
shields:uniqueType("CA"):update{state = "NV"}
end -- California State Routes
end -- Nevada
-- Gap
do -- New Jersey (incomplete)
do -- New Jersey Turnpike
local shield = Shield:new{formatStr = "New Jersey Turnpike Shield.svg", formatArgs = {}}
shields:type("Turnpike"):addShield("NJ", shield)
shields:uniqueType("NJTP"):update{state = "NJ", shield = shield}
end -- New Jersey Turnpike
end -- New Jersey (incomplete)
-- Gap
do -- Washington (incomplete)
local shield = Shield:new{formatStr = "WA-%s.svg"}
stateRoute("WA", shield, {"SR"})
end -- Washington (incomplete)
-- Gap
do -- Territories
do -- American Samoa
local shield = Shield:new{formatStr = "American Samoa Highway %s.svg"}
stateRoute("AS", shield, {})
end -- American Samoa
do -- Guam
local shield = Shield:new{formatStr = "Guam route marker %s.svg"}
stateRoute("GU", shield, {})
end -- Guam
-- Gap
end -- Territories
end -- State Routes
do -- Historic types
shields:uniqueType("AR 1926"):update{state = "AR", shield = Shield:new{formatStr = "Arkansas %s 1926.svg"}} -- 1926 Arkansas Highways
shields:uniqueType("IA 1926"):update{state = "IA", shield = Shield:new{formatStr = "Iowa %s 1926.svg"}} -- 1926 Iowa Highways
shields:uniqueType("IN 1940"):update{state = "IN", shield = Shield:new{formatStr = "Indiana %s (1940).svg"}} -- 1940 Indiana State Roads
end -- Historic types
do -- Special types
do -- Dixie Highway
local shield = Shield:new{formatStr = "Dixie Highway marker.svg", formatArgs = {}}
shields:uniqueType("Dixie"):update{shield = shield}
end -- Dixie Highway
do -- Forest Highways
local shield = Shield:new{formatStr = "Forest Route %s.svg"}
shields:addType("FR", shield)
shields:addType("FH", shield)
shields:addType("FFH", shield)
end -- Forest Highways
do -- Great River Road
local shield = Shield:new{formatStr = "GreatRiverRoad.svg", formatArgs = {}}
shields:uniqueType("GRR"):update{shield = shield}
local spurShield = Shield:new{formatStr = "GreatRiverRoad brown.svg", formatArgs = {}}
shields:uniqueType("GRR-Spur"):update{shield = spurShield}
end -- Great River Road
do -- Lincoln Highway
local shield = Shield:new{formatStr = "LincolnHighwayMarker.svg", formatArgs = {}}
shields:uniqueType("Lincoln"):update{shield = shield}
end -- Lincoln Highway
do -- National Old Trails Road
local shield = Shield:new{formatStr = "National Old Trails Road marker.svg", formatArgs = {}}
shields:uniqueType("National"):update{shield = shield}
end -- National Old Trails Road
end -- Special types
-- END: Type definitions
end -- Definitions
p.shields = shields
return p