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

-- Oregon
local OR = {}

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

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

OR.I.link = {
	["82"] = "Interstate 82",
	["205"] = "Interstate 205 (Oregon–Washington)",
	default = {
		hook = "splitlen",
		split = 3,
        above = "Interstate %route% (Oregon)",
        below = "Interstate %route% in Oregon"
	}
}

for k, v in pairs(OR) do if k:find ("^I") then 
	v.link = OR.I.link
	end
end      
OR["I 1961"].shield = {
	["80N"] = "I-%route% (1957).svg",
	default = {
		hook = "splitlen",
		split = 3,
		above = "I-%route% (1961).svg",
		below = "I-%route% (1957).svg"
	}
}

OR.BL.link = "Interstate %route% Business ([dab||%dab%, |]Oregon)"

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

OR.US.name = "U.S. Highway %route%"
OR.US.link = {
	["28"] = "U.S. Route 28",
	["126"] = "U.S. Route 126",
	["197"] = "U.S. Route 197",
	["199"] = "U.S. Route 199",
	["630"] = "U.S. Route 630",
	["730"] = "U.S. Route 730",
    default = "U.S. Route %route% in Oregon"
}

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

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

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

OR.OR = {
	shield = "OR %route%.svg",
	name = "Oregon Route %route%",
	link = "Oregon Route %route% [dab||(%dab%)|]",
	abbr = "OR&nbsp;%route%",
	width = "expand"
}

OR["OR-Bus"] = {
	shield = OR.OR.shield,
	name = OR.OR.name .. " Business",
	link = "Oregon Route %route% Business [dab||(%dab%)|]",
	abbr = OR.OR.abbr .. " Bus.",
	banner = "Business plate.svg",
	width = "expand",
    aux = OR[" aux "].Bus
}
                
OR["OR-Spur"] = {
	shield = OR.OR.shield,
	name = OR.OR.name .. " Spur",
	link = "Oregon Route %route% Spur [dab||(%dab%)|]",
	abbr = OR.OR.abbr .. " Spur",
	banner = "Spur plate.svg",
	width = "expand",
    aux = OR[" aux "].Spur
}

for _,type in ipairs({"OR"}) do
	for _,year in ipairs({"1932", "1948"}) do
		OR["OR " .. year] = {
			shield = format("OR %%route%% %s.svg", year),
			name = OR.OR.name,
			link = OR.OR.link,
			abbr = OR.OR.abbr,
			width = "square"
		}
	end
end

OR.FH.link = ""

local highwayNames = {
	["14-1"] = "Shaniko–Mitchell Highway No. 14",
	["18-1"] = "Lakeview–Burns Highway No. 18",
	["23-1"] = "Klamath–Crater Lake Highway No. 23",
	["24-1"] = "The Rim Highway No. 24",
	["27-1"] = "Clackamas Highway No. 27",
	["31-1"] = "Mount Hood–Clear Lake Highway No. 31",
	["37-1"] = "Crooked River Highway No. 37",
	["37-2"] = "Umatilla Cutoff Highway No. 37",
	["38-1"] = "Tiller–Summit Forest Road Highway No. 38",
	["39-1"] = "Deschutes Highway No. 39",
	["46-1"] = "East Portland–Oregon City Highway No. 46",
	["50-1"] = "Klamath Falls–Weed Highway No. 50",
	["54-1"] = "Boardman–Stanfield Highway No. 54",
	["164-1"] = "Butteville Road–Hubbard Highway No. 164",
	["210-1"] = "Corvallis–East Side Highway No. 210",
	["331-1"] = "Bingham Springs Highway No. 331",
	["424-1"] = "Sand Creek Highway No. 424",
	["455-1"] = "Homedale Spur Highway No. 455",
	["457-1"] = "Malloy Ranch–Idaho Line Highway No. 457",
	default = {
		hook = "mask",
		mask = "Road data/masks/USA/OR",
		base = "route",
		masked = "names",
		default = {
			["56"] = "%names% No. %route%",
			["57"] = "%names% No. %route%",
			["61"] = "%names% No. %route%",
			["64"] = "%names% No. %route%",
			["65"] = "%names% No. %route%",
			["68"] = "%names% Highway North No. %route%",
			["75"] = "%names% No. %route%",
			["81"] = "%names% Highway East No. %route%",
			["91"] = "%names% Highway West No. %route%",
			["138"] = "%names% Highway East No. %route%",
			["160"] = "%names% Highway South No. %route%",
			default = "%names% Highway No. %route%"
		}
	}
}

OR.Hwy = {
	shield = "",
	name = highwayNames,
	link = highwayNames,
	abbr = highwayNames
}

OR.Hwy2 = {
	shield = "",
	link = OR.Hwy.link,
	abbr = {
		["14-1"] = "Highway 14",
		["18-1"] = "Highway 18",
		["23-1"] = "Highway 23",
		["24-1"] = "Highway 24",
		["27-1"] = "Highway 27",
		["31-1"] = "Highway 31",
		["37-1"] = "Highway 37",
		["37-2"] = "Highway 37",
		["38-1"] = "Highway 38",
		["39-1"] = "Highway 39",
		["46-1"] = "Highway 46",
		["50-1"] = "Highway 50",
		["54-1"] = "Highway 54",
		["164-1"] = "Highway 164",
		["210-1"] = "Highway 210",
		["331-1"] = "Highway 331",
		["424-1"] = "Highway 424",
		["455-1"] = "Highway 455",
		["457-1"] = "Highway 457",
		default = "Highway %route%"
	}
}

-- add new types above this line if you want it to have the state highway browse and maint
for k, v in pairs(OR) do if k:find ("^%a") then
	v.maint = "[[Oregon Department of Transportation|ODOT]]"
	v.browse = "[[State highways in Oregon|Oregon Highways]]"
	v.browselinks = {
		[1] = "[[List of Interstate Highways in Oregon|Interstate]]",
		[2] = "[[List of U.S. Highways in Oregon|US]]",
		[3] = "[[List of numbered state routes in Oregon|State]]",
		[4] = "[[List of named state highways in Oregon|Named]]",
		[5] = "[[Oregon State Scenic Byways|Scenic]]"
	}
	end
end

for k, v in pairs(OR) do if k:find ("^%a+ %d") then 
	v.maint = "[[Oregon State Highway Department]]"
	end
end

OR.CA = {alias = {module = "USA/CA", type = "SR"}}
OR.WA = {alias = {module = "USA/WA", type = "WA"}}
OR.ID = {alias = {module = "USA/ID", type = "SH"}}
OR.NV = {alias = {module = "USA/NV", type = "NV"}}

return OR