--[==[
To inspect the content of this data module, use Special:ExpandTemplates
and enter the following input text:  
To inspect the content of this data module when editing, enter the following
into the Debug console:
local util = require("Module:Road data/util")
print(util.arrayToString(p))
To inspect a particular route type, change `p` above to include the route type,
e.g., `p.I` and `p["US-Hist"]`.
]==]  
-- Michigan
local MI = {}  
local util = require("Module:Road data/util")
local format = mw.ustring.format
util.addAll(MI, require("Module:Road data/strings/USA"))  
local suffix = " ([dab||%dab%, |]Michigan)"
local special = " ([dab||%dab%, Michigan|Michigan highway])"  
MI.I.link = {
["96"] = "Interstate 96",
["196"] = "Interstate 196",
["296"] = "Interstate 296",
["496"] = "Interstate 496",
["696"] = "Interstate 696",
["94N"] = "Interstate 94N",
default = {hook = "split",
split = 100,
above = "Interstate %route% (Michigan)",
below = "Interstate %route% in Michigan"
}
}  
for k, v in pairs(MI) do if k:find ("^I") then
v.link = MI.I.link
end
end  
for k, v in pairs(MI) do if k:find ("^I %d") then
v.shield = v.shieldmain
end
end  
MI.BL.link = MI.I.base .. " Business" .. suffix
MI.BL.abbr = "BL " .. MI.I.abbr
MI.BL.name = "Business Loop " .. MI.I.base  
for k, v in pairs(MI) do if k:find ("^BL") then
v.link = MI.BL.link
v.abbr = MI.BL.abbr
v.name = MI.BL.name
end
end  
MI.BS.link = MI.I.base .. " Business" .. suffix
MI.BS.abbr = "BS " .. MI.I.abbr
MI.BS.name = "Business Spur " .. MI.I.base  
for k, v in pairs(MI) do if k:find ("^BS") then
v.link = MI.BS.link
v.abbr = MI.BS.abbr
v.name = MI.BS.name
end
end  
MI.US.name = "US Highway %route%"
MI.US.link = {
["8"] = "U.S. Route 8",
["102"] = "U.S. Route 102",
["112"] = "U.S. Route 112",
["131"] = "U.S. Route 131",
["141"] = "U.S. Route 141",
["223"] = "U.S. Route 223",
default ="U.S. Route %route% in Michigan"
}  
for k, v in pairs(MI) do if k:find ("^US %d") then
v.shield = v.shieldmain
v.name = MI.US.name
v.link = MI.US.link
end
end
MI["US 1961"] = MI["US 1948"] -- MI did not use the 1961 version and continued to use the 1948  
for _,auxType in ipairs({"Bus", "Byp", "City", "Conn", "Emerg", "Opt", "Scenic", "Spur", "Temp", "Toll", "Truck"}) do
local spec = MI[" aux "][auxType]
for k, v in pairs(MI) do if k:find (auxType) then if k:find ("^US") then
v.name = spec.name .. " " .. MI.US.name
v.link = MI.US.base .. " " .. spec.name .. " ([dab||%dab%, |]Michigan)"
v.abbr = spec.abbrsuffix .. " " .. MI.US.abbr
end
end
end
end  
for _,auxType in ipairs({"Alt"}) do
local spec = MI[" aux "][auxType]
for k, v in pairs(MI) do if k:find (auxType) then if k:find ("^US") then
v.shield = "US %route%A.svg"
v.name = MI.US.name .. "A"
v.link = MI.US.base .. "A [dab||(%dab%, Michigan)|in Michigan]"
v.base = spec.abbrsuffix .. MI.US.abbr
v.abbr = MI.US.abbr .. "A"
v.banner = ""
end
end
end
end  
for _,year in ipairs({'1926', '1948'}) do
for _,auxType in ipairs({"Bus", "Byp", "Conn", "Spur", "Truck"}) do
local type = "US " .. year
local spec = MI[" aux "][auxType]
MI[type .. "-".. auxType] = {
shield = MI[type].shieldmain,
name = spec.name .. " " .. MI[type].name,
link = MI[type].base .. " " .. spec.name .. suffix,
abbr = spec.abbrsuffix .. " " .. MI[type].abbr,
banner = spec.bannerprefix .. " plate " .. year .. ".svg",
aux = spec.aux,,
}
end
end  
for _,year in ipairs({'1926', '1948'}) do
for _,auxType in ipairs({"Alt"}) do
local type = "US " .. year
local spec = MI[" aux "][auxType]
MI[type .. "-".. auxType] = {
shield = format("US %%route%%A Michigan %s.svg", year),
name = MI[type].name .. "A",
link = MI[type].base .. " " .. spec.name .. suffix,
abbr = MI[type].abbr .. "A",
aux = spec.aux,,
}
end
end
MI["US 1961-Alt"] = MI["US 1948-Alt"]
MI["US 1961-Bus"] = MI["US 1948-Bus"]
MI["US 1961-Byp"] = MI["US 1948-Byp"]
MI["US 1961-Conn"] = MI["US 1948-Conn"]
MI["US 1961-Spur"] = MI["US 1948-Spur"]
MI["US 1961-Truck"] = MI["US 1948-Truck"]  
MI.M = {
base = "M-%route%",
shield = {
["185"] = "M-185 (MISPC).svg",
["331"] = "",
["554"] = "",
default = {
hook = "split",
split = 100,
above = "M-%route% rectangle.svg",
below = "M-%route%.svg"
}
},
name = "M-%route%",
link = "M-%route% ([dab||%dab% |]Michigan highway)",
abbr = "M-%route%",,
color = {
arg = "route",
["185"] = "hist"
}
}
MI.MI = MI.M  
for _,year in ipairs({"1919", "1926", "1948", "1973"}) do
MI["M " .. year] = {
shield = format("M-%%route%% %s.svg", year),
base = MI.M.base,
name = MI.M.name,
link = MI.M.link,
abbr = MI.M.abbr,,
}
end  
MI["M 1973"].shield = {
["185"] = "M-185 (MISPC).svg",
["331"] = "",
["554"] = "",
default ="M-%route%.svg"  
}  
MI["Capitol Loop"] = {
shield = "CapitolLoop.svg",
link = "Capitol Loop",
abbr = "Capitol Loop",
bannersuffix = "green"}  
for _,type in ipairs({'M'}) do
for _,auxType in ipairs({"Alt", "Bus", "Byp", "Conn", "Spur", "Truck"}) do
local spec = MI[" aux "][auxType]
MI[type .. "-" .. auxType] = {
shield = MI[type].shield,
shieldmain = MI[type].shieldmain,
name = spec.name .. " " .. MI[type].name,
link = MI[type].base .. " " .. spec.name .. " ([dab||%dab%, Michigan|Michigan highway])",
abbr = spec.abbrsuffix .. " " .. MI[type].abbr,
banner = spec.bannerprefix .. " plate.svg",
aux = spec.aux,,
}
end
end  
for _,year in ipairs({'1926', '1948'}) do
for _,auxType in ipairs({"Alt", "Bus", "Byp", "Conn", "Spur", "Truck"}) do
local type = "M " .. year
local spec = MI[" aux "][auxType]
MI[type .. "-" .. auxType] = {
shield = MI[type].shield,
shieldmain = MI[type].shieldmain,
name = spec.name .. " " .. MI[type].name,
link = MI[type].base .. " " .. spec.name .. " ([dab||%dab%, Michigan|Michigan highway])",
abbr = spec.abbrsuffix .. " " .. MI[type].abbr,
banner = spec.bannerprefix .. " plate " .. year .. ".svg",
aux = spec.aux,,
}
end
end
MI["MI-Alt"] = MI["M-Alt"]
MI["MI-Bus"] = MI["M-Bus"]
MI["MI-Byp"] = MI["M-Byp"]
MI["MI-Conn"] = MI["M-Conn"]
MI["MI-Spur"] = MI["M-Spur"]
MI["MI-Truck"] = MI["M-Truck"]  
MI.Connector = {
shield = "No image.svg",
name = "Connector %route%",
link = "Connector %route% (Michigan highway)",
abbr = "Connector %route%"
}  
MI.NSB.shieldmain = {
["River Road National Scenic Byway"] = {"MUTCD D6-4.svg", "National Forest Scenic Byway.svg"},
default = "MUTCD D6-4.svg"
}
MI.NSB.orientation = "upright"  
MI.BlankM = {
shield = "No image.svg",
name = MI.M.name,
link = MI.M.link,
abbr = MI.M.abbr
}  
MI["BlankM-Conn"] = {
shield = MI.BlankM.shield,
name = MI["M-Conn"].name,
link = MI["M-Conn"].link,
abbr = MI["M-Conn"].abbr
}  
MI["BlankUS-Bus"] = {
shield = MI.BlankM.shield,
name = MI["US-Bus"].name,
link = MI["US-Bus"].link,
abbr = MI["US-Bus"].abbr,
}  
MI["BlankUS-Conn"] = {
shield = MI.BlankM.shield,
name = MI["US-Conn"].name,
link = MI["US-Conn"].link,
abbr = MI["US-Conn"].abbr,
}  
-- add new types above this line if you want it to have the state highway browse and maint
for k, v in pairs(MI) do if k:find ("^%a") then
v.maint = "MDOT"
end
end  
MI.CDH = {
shield = "County %route%.svg",
shieldmain = {
["H-13"] = {"County %route%.svg", "Forest Route 13.svg"},
default = "County %route%.svg"
},
link = "%route% (Michigan county highway)",
abbr = "%route%",
bannersuffix = "county",
color = {
arg = "route",
["H-13"] = "hist",
default = "MUTCDgreen"
},
browse = "County-Designated Highways",
browselinks = ""
}  
MI.CR.shield = "Michigan %route% %county% County.svg"
MI.CR.shieldmain = MI.CR.shield
MI.CR.link = {
ifexists = true,
default = "County Road %route% (%county% County, Michigan)"}
MI.CR.bannersuffix = {arg = "county",
default = "",
Gogebic = "county"}  
MI.NFSB.shieldmain = {
["Black River"] = {"National Forest Scenic Byway.svg", "Michigan 513 Gogebic County.svg"},
["Whitefish Bay"] = {"National Forest Scenic Byway.svg", "Forest Route 42.svg"},
default = "National Forest Scenic Byway.svg",
}  
MI.CTR = {
shield = "City Truck Route.svg",
link = "",
abbr = "City Truck Route"
}  
MI.WI = {alias = {module = "USA/WI", type = "WI"}}
MI["US-WI"] = {alias = {module = "USA/WI", type = "US"}}