Module:Infobox road/abbrev/USA

local p = {}

local format = mw.ustring.format

local typesModule = require "Module:Infobox road/abbrev/defs" Country = typesModule.Country Type = typesModule.Type Abbr = typesModule.Abbr

local abbrs = Country:new do -- Abbreviation definitions function abbrs:typeOverride(args) local type = args.type local state = args.state if not(state) then return end local stateVarTypes = {"%s", "%s-old", "%s 1926", "%s 1948", "%s 1955"} local typesToCheck = {} for i,v in ipairs(stateVarTypes) do           local type = format(v, state) typesToCheck[type] = true end if typesToCheck[type] then return self["SR"] else return nil end end do -- Interstates local type = Type:new{formatStr = "I-%s"} abbrs["I"] = type abbrs["Interstate"] = type abbrs["I 1957"] = type type["HI"] = Abbr:new{formatStr = "H-%s"} type["PR"] = Abbr:new{formatStr = "PRI-%s"} end -- Interstates abbrs["Future"] = Abbr:new{formatStr = "Future I-%s"} -- Future Interstates do -- U.S. Routes local type = Type:new{formatStr = "US %s"} abbrs["US"] = type abbrs["US 1926"] = type abbrs["US 1948"] = type abbrs["US 1950"] = type do -- US-x local states = {"AL", "ID", "KS", "OK", "TN", "UT"} local abbr = Abbr:new{formatStr = "US-%s"} for i,v in ipairs(states) do               type[v] = abbr end end -- US-x end -- U.S. Routes abbrs["NER"] = Abbr:new{formatStr = "Route %s"} -- New England Routes do -- State highways local type = Type:new{formatStr = "%s %s", formatArgs = {"state", "route"}} do           local types = {"SH", "SR", "Route", "M", "K", "U", "SH-old", "SR-old", "Route-old", "LA 1990", "M-old", "M 1919", "M 1926", "M 1948", "MN 1950", "NJ 1956", "NY 1927", "NY 1960", "NC 1945", "NC 1957", "Town"} for i,v in ipairs(types) do               abbrs[v] = type end end do -- SR-x local abbr = Abbr:new{formatStr = "SR-%s"} type["AL"] = abbr type["TN"] = abbr end -- SR-x do -- SR x           local abbr = Abbr:new{formatStr = "SR %s"} local states = {"AZ", "CA", "FL", "GA", "IN", "ME", "NV", "OH", "VA", "WA"} for i,v in ipairs(states) do               type[v] = abbr end end -- SR x       do -- SH x            local abbr = Abbr:new{formatStr = "SH %s"} type["CO"] = abbr type["TX"] = abbr end -- SH x       do -- SH-x local abbr = Abbr:new{formatStr = "SH-%s"} type["ID"] = abbr type["OK"] = abbr end -- SH-x do -- Route x           local abbr = Abbr:new{formatStr = "Route %s"} local states = {"CT", "HI", "MA", "MO", "NJ", "RI"} for i,v in ipairs(states) do               type[v] = abbr end end -- Route x       do -- -x local abbr = Abbr:new{formatStr = "%s-%s", formatArgs = {"state", "route"}} type["AK"] = abbr type["PR"] = abbr end -- -x do -- New York local function dabStr(args) local dab = args.dab if dab and #dab > 0 then args.dabStr = format(" (%s)", dab) else args.dabStr = "" end end type["NY"] = Abbr:new{formatStr = "NY %s%s", formatArgs = {"route", "dabStr"}, preprocessors = {dabStr}} end -- New York type["VI"] = Abbr:new{formatStr = "Highway %s"} -- Virgin Islands type["AR"] = Abbr:new{formatStr = "Hwy. %s"} -- Arkansas type["GU"] = Abbr:new{formatStr = "GH-%s"} -- Guam type["IA"] = Abbr:new{formatStr = "Iowa %s"} -- Iowa type["KS"] = Abbr:new{formatStr = "K-%s"} -- Kansas type["MI"] = Abbr:new{formatStr = "M-%s"} -- Michigan type["NE"] = Abbr:new{formatStr = "N-%s"} -- Nebraska type["WI"] = Abbr:new{formatStr = "WIS %s"} -- Wisconsin type["WY"] = Abbr:new{formatStr = "WYO %s"} -- Wyoming type["UT"] = Abbr:new{formatStr = "SR-%s", exceptions = {["281-320"] = "SR-281 to SR-320"}} -- Utah end -- State highways do -- Former routes local type = Abbr:new{formatStr = "ex-SR %s"} abbrs["Former"] = type abbrs["Former Toll"] = type end -- Former routes do -- Secondary routes local type = Type:new{formatStr = "SR %s"} abbrs["Sec"] = type abbrs["Secondary"] = type local abbr = Abbr:new{formatStr = "SR-%s"} type["MT"] = abbr type["TN"] = abbr end -- Secondary routes do -- County routes local type = Type:new{formatStr = "CR %s"} abbrs["CR"] = type type["LA"] = Abbr:new{formatStr = "PR %s"} local abbr = Abbr:new{formatStr = "CR-%s"} type["AL"] = abbr type["ID"] = abbr end -- County routes abbrs["CDH"] = Abbr:new{formatStr = "%s"} -- County Designated Highways (Michigan) abbrs["E"] = Abbr:new{formatStr = "E-%s"} -- E-470 (Colorado) do -- Forest Highways local type = Type:new{formatStr = "FH %s"} abbrs["FR"] = type abbrs["FH"] = type abbrs["FFH"] = type type["CA"] = Abbr:new{formatStr = "F.H. %s"} type["MI"] = Abbr:new{formatStr = "FFH %s"} end -- Forest Highways do -- Toll roads local type = Type:new abbrs["Toll"] = type type["FL"] = Abbr:new{formatStr = "SR %s"} type["PA"] = Abbr:new{formatStr = "PA %s"} do -- Texas local exceptions = {["1"] = "Loop 1", ["183A"] = "183A"} type["TX"] = Abbr:new{formatStr = "SH %s", exceptions = exceptions} end -- Texas end -- Toll roads abbrs["LA 1924"] = Abbr:new{formatStr = "SR %s"} -- 1924 Louisiana State Routes do -- Farm to Market Roads local abbr = Abbr:new{formatStr = "FM %s"} abbrs["FM"] = abbr abbrs["Farm"] = abbr end -- Farm to Market Roads abbrs["Link"] = Abbr:new{formatStr = "L-%s"} -- Nebraska Links abbrs["Loop"] = Abbr:new{formatStr = "Loop %s"} -- Loops abbrs["PSH"] = Abbr:new{formatStr = "PSH %s"} -- Primary State Highways (Washington) abbrs["SSH"] = Abbr:new{formatStr = "SSH %s"} -- Secondary State Highways (Washington) abbrs["Park"] = Abbr:new{formatStr = "PR %s"} -- Park Roads abbrs["Parkway"] = Abbr:new{formatStr = "%s Parkway"} -- Parkways do -- Ranch to Market Roads local abbr = Abbr:new{formatStr = "RM %s"} abbrs["RM"] = abbr abbrs["Ranch"] = abbr end -- Ranch to Market Roads do -- Recreational Roads local type = Type:new{formatStr = "RE %s"} abbrs["Rec"] = type abbrs["RE"] = type type["NE"] = Abbr:new{formatStr = "R-%s"} end -- Recreational Roads do -- Spurs local type = Type:new{formatStr = "Spur %s"} abbrs["Spur"] = type type["NE"] = Abbr:new{formatStr = "S-%s"} end -- Spurs end

p.abbrs = abbrs return p