--[==[
To inspect the content of this data module, use [[Special:ExpandTemplates]]
and enter the following input text:
  {{#invoke:Road data/dump|dump|module=Module:<name-of-this-module>}}

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"]`.
]==]

-- Iowa
local IA = {}

local util = require("Module:Road data/util")
local format = mw.ustring.format
util.addAll(IA, require("Module:Road data/strings/USA"))

local suffix = " ([dab||%dab%, |]Iowa)"

IA.common = {
	location = {
		["first-label"] = "State",
		["first-data"] = "[[Iowa]]",
		["second-label"] = "Counties",
	}
}

IA.I.link = {
	["129"] = "Interstate 129",
	["280"] = "Interstate 280 (Iowa–Illinois)",
	["480"] = "Interstate 480 (Nebraska–Iowa)",
	["680"] = "Interstate 680 (Nebraska–Iowa)",
	default = {
		hook = "splitlen",
		split = 3,
		above = "Interstate %route% (Iowa)",
		below = "Interstate %route% in Iowa"
	}
}

for k, v in pairs(IA) do if k:find ("^I") then 
	v.link = IA.I.link
	end
end

IA.BL.name = IA.I.name .. " Business Loop"
IA.BL.link = IA.I.base .. " Business" .. suffix
IA.BL.abbr = IA.I.abbr .. " Business Loop"

for k, v in pairs(IA) do if k:find ("^BL") then 
	v.link = IA.BL.link
	end
end

IA.US.name = "U.S. Highway %route%"
IA.US.link = {
	["32"] = "U.S. Route 6 in Iowa",
	["55"] = "U.S. Route 55",
	["151"] = "U.S. Route 151",
	["161"] = "U.S. Route 161",
	["163"] = "Iowa Highway 163",
	["218"] = "U.S. Route 218",
	["275"] = "U.S. Route 275",
	default = "U.S. Route %route% in Iowa"
}

for k, v in pairs(IA) do if k:find ("^US %d") then 
	v.name = IA.US.name
	v.link = IA.US.link
	end
end

for _,auxType in ipairs({"Alt", "Bus", "Byp", "City", "Conn", "Emerg", "Opt", "Scenic", "Spur", "Temp", "Toll", "Truck"}) do
	local spec = IA[" aux "][auxType]
		for k, v in pairs(IA) do if k:find (auxType) then if k:find ("^US") then
			v.shield = IA["US 1961"].shield
			v.name = IA.US.name .. " " .. spec.name
			v.link = IA.US.base .. " " .. spec.name .. suffix
			end
		end
	end
end

IA["US-Hist"].link = IA.US.link

IA["US 1926-City"] = {
	shield = "US %route% City 1926.svg",
	name = "City " .. IA.US.name,
	link = IA["US-City"].link,
	abbr = "City " .. IA.US.abbr,
	aux = IA[" aux "].City
}
IA["US 1948-City"] = IA["US 1926-City"]

IA["US-City-Bus"] = {
	shield = "City Route %route%.svg",
	name = IA["US-Bus"].name,
	link = IA["US-Bus"].link,
	abbr = IA["US-Bus"].abbr,
	aux = IA[" aux "].Bus
}

IA["US 1961-Alt"] = {
	shield = IA["US 1961"].shield,
	name = IA["US-Alt"].name,
	link = IA["US-Alt"].link,
	abbr = IA["US-Alt"].abbr,
	banner = "Alternate plate 1961.svg",
	bannersuffix = "1961",
	aux = IA[" aux "].Alt
}
IA["US 1971"].shield = IA["US 1961"].shield

IA.IA = {
	base = "Iowa Highway %route%",
	shield = {
		hook = "splitlen",
		split = 2,
		above = "Elongated circle %route%.svg",
		below = "Circle sign %route%.svg"
	},
	name = "Iowa Highway %route%",
	link = "Iowa Highway %route%" .. IA[" dab "],
	abbr = "Iowa&nbsp;%route%",
	width = "expand"
}

for _,type in ipairs({"IA"}) do
	for _,year in ipairs({"1926", "1948", "1961", "1980"}) do
		IA["IA " .. year] = {
			shield = format("Iowa %%route%% %s.svg", year),
			name = IA.IA.name,
			link = IA.IA.link,
			abbr = IA.IA.abbr,
			width = "square",
			bannersuffix = format("%s", year),
		}
	end
end

IA["IA 1948"].shield = IA["IA 1926"].shield
IA["IA 1961"].shield = {
	hook = "splitlen",
	split = 3,
	above = "Circle sign %route% (small).svg",
	below = {
		hook = "splitlen",
		split = 2,
		above = "Elongated circle %route%.svg",
		below = "Circle sign %route%.svg"
	}
}
IA["IA 1980"].shield = {
	hook = "between",
	lower = 10,
	upper = 100,
	yes = "Elongated circle %route%.svg",
	no = "Circle sign %route%.svg"
}
IA["IA 1980"].bannersuffix = "1971"

IA["IA-Bus"] = {
	shield = IA["IA 1980"].shield,
	name = "Iowa Highway %route% Business",
	link = "Iowa Highway %route% Business [dab||(%dab%)|]",
	abbr = IA.IA.abbr.." Business",
	banner = "Business plate.svg",
	width = "square",
	aux = IA[" aux "].Bus
}

IA.AOTS = {
	shield = "Elongated circle 27.svg",
	name = "Avenue of the Saints",
	link = "Avenue of the Saints",
	abbr = "Iowa&nbsp;27",
	banner = "Avenue of the Saints banner.svg"
}

IA.Lincoln.link = "Lincoln Highway in Iowa"
IA.Lincoln.abbr = "Lincoln Highway Heritage Byway"
IA.Jefferson.abbr = "Jefferson Highway Heritage Byway"

-- add new types above this line if you want it to have the state highway browse and maint
for k, v in pairs(IA) do if k:find ("^%a") then
	v.maint = "[[Iowa Department of Transportation|Iowa DOT]]"
	end
end

IA["IA 1926"].maint = "[[Iowa State Highway Commission]]"
IA["IA 1948"].maint = IA["IA 1926"].maint
IA["IA 1961"].maint = IA["IA 1926"].maint

IA.CR.link = {
	["105"] = "Iowa Highway 105",
	["99"] = "Iowa Highway 99",
	["X99"] = "Iowa Highway 99",
	default = {
		ifexists = true,
		default = "County Road %route% (%county% County, Iowa)"
	}
}
IA.CR.maint = "[county||%county% County Highway Department|]"

IA.Primary = {
	shield = "Iowa Primary %route%.svg",
	name = "Primary Road No. %route%",
	link = "Iowa Primary Road No. %route%",
	abbr = "No. %route%",
	width = "37",
	maint = "[[Iowa State Highway Commission]]"
}

IA.Registered = {
	shield = "%route% pole.png",
	name = "%route%",
	link = "%route%",
	abbr = "%route%",
	orientation = "upright",
	maint = "%route% Association"
}

IA.Test = {
	shield = "Circle sign %route%.svg",
	shieldto = "US %route%.svg",
	bannerloc = "below",
	link = IA.IA.link,
	linklist = IA.I.link,
	abbr = IA.IA.abbr,
	bannersuffix = "orange",
}
          
IA.IL = {alias = {module = "USA/IL", type = "IL"}}
IA.MN = {alias = {module = "USA/MN", type = "MN"}}
IA.MO = {alias = {module = "USA/MO", type = "MO"}}
IA.NE = {alias = {module = "USA/NE", type = "NE"}}
IA.SD = {alias = {module = "USA/SD", type = "SD"}}
IA.WI = {alias = {module = "USA/WI", type = "WI"}}

return IA