Module:Infobox road/browselinks/sandbox explained

local p = local getArgs = require('Module:Arguments').getArgslocal util = require("Module:Road data/util")local yesno = require('Module:Yesno')local routeModule = require("Module:Infobox road/route")local parserModule = require("Module:Road data/parser")local parser = parserModule.parserlocal format = mw.ustring.formatlocal frame = mw.getCurrentFrame

local function country(args) local state = args.state or args.province local country local countryModule = mw.loadData("Module:Road data/countrymask") local country = args.country or countryModule[state] return countryend

local function the(args) if country(args)

"ALA" or country(args)

"BHS" or country(args)

"CAF" or country(args)

"COG" or country(args)

"COD" or country(args)

"COM" or country(args)

"CZE" or country(args)

"DOM" or country(args)

"FSM" or country(args)

"GMB" or country(args)

"IMN" or country(args)

"MDV" or country(args)

"MHL" or country(args)

"NLD" or country(args)

"PHL" or country(args)

"SLB" or country(args)

"ARE" or country(args)

"GBR" or country(args)

"USA" then return 'the' else return endend

local function africa(args) return "*Trans-African Highway network"end

local function asia(args) return "*Asian Highway Network"end

local function europe(args) if args.type

"Pan" then return "*Pan-European corridors" else return "*International E-road network\n\n*A Class\n*B Class" endend

local function browselinks(args) local ISO = require('Module:ISO 3166') local name = ISO.name if country(args)

or country(args)

'YUG' or country(args)

nil then return nil elseif country(args)

'ASIA' then return asia(args) elseif country(args)

'EUR' then return europe(args) elseif country(args)

'TAH' then return africa(args) elseif country(args)

'ARE' then return string.format("*Transport in %s %s\n\n*Roads in Dubai", the(args), name) elseif country(args)

'AUS' then local state = args.state or local stateName = ISO.name local links = "*Highways in Australia\n\n*National Highway\n*Freeways in Australia" if state

'ACT' then return links .. "\n\nRoad infrastructure in Canberra" elseif state

'NSW' then return links .. "\n\nHighways in New South Wales" elseif state ~= then return string.format("%s \n\nHighways in %s", links, stateName, stateName) else return links end elseif country(args)

'AUT' then return "*Highways of Austria\n\n*Autobahns\n*Expressways\n*State Roads" elseif country(args)

'BEL' then return "*Highways of Belgium\n\n*Motorways\n*National Roads" elseif country(args)

'BOL' then return "*Highways of Bolivia\n\n*National Roads" elseif country(args)

'BRA' then local state = args.state or local stateName = ISO.name local links = "*Highways in Brazil\n\n*Federal" if state

'RS' or state

'SP' or state

'MG' then return string.format("%s \n\n*%s State Highways", links, stateName, stateName) else return links end elseif country(args)

'BRN' then return "*Brunei National Roads System" elseif country(args)

'CAN' then local province = args.province or local stateName = ISO.name local TCH if args.type

'TCH' and province

then TCH = "*Trans-Canada Highway\n\n*National Highway System" elseif args.type

'TCH' and province ~= then TCH = "*Trans-Canada Highway" else TCH = end local provinces if province

then provinces = elseif province

'AB' then provinces = "Alberta Provincial Highway Network\n\n*Current\n*Former" elseif province

'NT' then provinces = "Northwest Territories highways" elseif province

'YT' or province

'YK' then provinces = "Territorial highways in Yukon" elseif province

'NU' then provinces = "Highways in Nunavut" elseif province

'BC' then provinces = "British Columbia provincial highways" elseif province

'NL' then provinces = "Highways in Newfoundland and Labrador" elseif province

'QC' then provinces = "Quebec provincial highways" elseif province

'ON' then if args.type

'Fwy' or args.type

'Hwy' or args.type

'ON' or args.type

'ON 1960' or args.type

'Secondary' or args.type

'Sec' or args.type

'TCH' then provinces = "Ontario provincial highways" elseif args.type

'CR' or args.type

'DR' or args.type

'MR' or args.type

'RR' then provinces = "County roads in Ontario" elseif args.type

'Parkway' then provinces = "Parkways of the Great Lakes" elseif args.type

'Municipal' then provinces = "Ontario municipal expressways" elseif args.type

'Toronto' then provinces = "Toronto municipal expressways" elseif args.type

'NCC' then provinces = "NCC parkways in Ottawa" else provinces = "Roads in Ontario" end else provinces = string.format("Provincial highways in %s", stateName, stateName) end local second if province

'YT' or province

'YK' then second = "Miscellaneous" elseif province

'MB' then second = "Winnipeg City Routes" elseif province

'NB' then second = "Former routes" elseif province

'NS' then second = "100-series" elseif province

'QC' then second = "Autoroutes\n*List\n*Former" elseif province

'ON' then if args.type

'Fwy' or args.type

'Hwy' or args.type

'ON' or args.type

'ON 1960' or args.type

'Secondary' or args.type

'Sec' or args.type

'TCH' then second = "Current\n*Former\n*400-series" elseif args.type

'Parkway' then second = "Long Sault\n*Niagara\n*St. Clair\n*1000 Islands\n\n*Roads in Ontario" else second = end else second = end return string.format("%s\n\n*%s\n\n*%s", TCH, provinces, second)

elseif country(args)

'CHE' then return "*Transport in Switzerland\n\n*Motorways" elseif country(args)

'CHN' then local province = args.province or local stateName = ISO.name local links if args.type

"Ex" or args.type

"Expwy" then links = "*National Trunk Highway System\n\n*Primary\n*Auxiliary\n\n*National Highways\n*Transport in China" elseif args.type

"G" then links = "*National Trunk Highway System\n\n*Primary\n*Auxiliary" else links = "*Transport in China" end if province

'BJ' or province

'SH' or province

'JS' or province

'ZJ' or province

'HA' or province

'GD' then return string.format("%s \n\n*Expressways of %s", links, stateName) else return links end elseif country(args)

'CRI' then return "*National Road Network of Costa Rica" elseif country(args)

'CYP' then return "*Motorways and roads in Cyprus" elseif country(args)

'DEU' then if args.type

"E" then return europe(args) else return "*Roads in Germany\n\n*Autobahns\n**List\n*Federal\n**List\n\n*State\n*E-roads" end elseif country(args)

'ESP' then local province = args.province or local stateName = ISO.name local links if args.type

"E" then links = europe(args) else links = "*Highways in Spain\n\n*Autopistas and autovías\n*National Roads" end local community if province ~= then if province

'B' or province

'GI' or province

'L' or province

'T' then community = "Primary Highways in Catalonia" elseif province

'GC' or province

'TF' then community = "Transport in the Canary Islands" elseif province

'ML' then community = "Transport in Melilla" elseif province

'M' or province

'MD' then community = "Transport in the Community of Madrid" else community = end else community = end return string.format("%s\n\n*%s", links, community) elseif country(args)

'FIN' then if args.type

"E" then return europe(args) else return "*Highways in Finland" end elseif country(args)

'FRA' then if args.type

"E" then return europe(args) else return "*Roads in France\n\n*Autoroutes\n*Routes nationales" end elseif country(args)

'GBR' or country(args)

'ENG' or country(args)

'SCT' or country(args)

'WLS' then if args.type

"Roman" then return "*Roman roads in Britannia" else return "*Roads in the United Kingdom\n\n*Motorways\n*A and B road zones" end elseif country(args)

'GEO' then return "*Roads in Georgia\n\n*International Routes\n*National Routes" elseif country(args)

'GHA' then return "*Ghana Road Network" elseif country(args)

'GIB' then return "*Streets in Gibraltar" elseif country(args)

'GRC' then return "*Highways in Greece\n\n*Motorways\n*National Roads" elseif country(args)

'HKG' then return "*Transport in Hong Kong\n\n*Routes\n*Roads and Streets" elseif country(args)

'HUN' then return "*Roads in Hungary\n\n*Highways\n*Main roads\n*Local roads" elseif country(args)

'IND' then local state = args.state or local stateName = ISO.name local links = "*Roads in India\n\n*Expressways\n*National\n*State\n*Asian" if state ~= then return string.format("%s \n\nState Highways in %s", links, stateName, stateName) else return links end elseif country(args)

'IRL' then return "*Roads in Ireland\n\n*Motorways\n*Primary\n*Secondary\n*Regional" elseif country(args)

'IRN' then return "*Highways in Iran\n\n*Freeways" elseif country(args)

'ISR' then return "*Roads in Israel\n\n*Highways" elseif country(args)

'ITA' then return "*Roads in Italy\n\n*Autostrade\n*State\n*Regional\n*Provincial\n*Municipal" elseif country(args)

'JPN' then return "*National highways of Japan\n\n*Expressways of Japan" elseif country(args)

'KOR' then return "*Highway systems of South Korea\n\n*Expressways\n*National\n*Local" elseif country(args)

'KOS' then -- this is not an official ISO code return "*Roads in Kosovo" elseif country(args)

'LKA' then return "*Roads in Sri Lanka\n\n*Expressways\n*A-Grade\n*B-Grade" elseif country(args)

'LUX' then return "*Motorways in Luxembourg" elseif country(args)

'LVA' then return "*National Roads in Latvia" elseif country(args)

'MEX' then local state = args.state or local stateName = ISO.name local links = "*Mexican Federal Highways\n\n*List\n*Autopistas" if state

'SON' then return string.format("%s \n\nState Highways in %s", links, stateName, stateName) elseif state

'DUR' then return string.format("%s \n\nState Highways in %s", links, stateName, stateName) else return links end elseif country(args)

'MWI' then return "*Transport in Malawi\n\n*Roads" elseif country(args)

'MYS' then return "*Highways in Malaysia\n\n*Expressways\n*Federal\n*State" elseif country(args)

'NIR' then return "*Roads in Northern Ireland\n\n*Motorways\n*A roads in Northern Ireland" elseif country(args)

'NLD' then if args.type

"E" then return europe(args) else return "*Roads in the Netherlands\n\n*Motorways\n*E-roads\n*Provincial\n*City routes" end elseif country(args)

'NOR' then if args.type

"E" then return europe(args) else return "*Roads in Norway\n\n*National Roads\n*County Roads" end elseif country(args)

'NZL' then return "*New Zealand state highways\n\n*Motorways and expressways\n*List" elseif country(args)

'PHL' then if args.type

"AH" then return asia(args) else return "*Roads in the Philippines\n\n*Highways\n*Expressways\n**List" end elseif country(args)

'POL' then return "*National roads in Poland\n\n*Voivodeship roads" elseif country(args)

'ROU' then return "*Roads in Romania\n\n*Highways" elseif country(args)

'RUS' then return "*Russian Federal Highways" elseif country(args)

'SGP' then return "*Expressways of Singapore" elseif country(args)

'SRB' then return "*Roads in Serbia\n\n*Motorways" elseif country(args)

'SWE' then if args.type

"E" then return europe(args) else return "*Roads in Sweden\n\n*National Roads\n*County Roads" end elseif country(args)

'THA' then return "*Highways in Thailand\n\n*Motorways\n*Asian Highways" elseif country(args)

'TUR' then return "*Highways in Turkey\n\n*Motorways\n**List\n*State Highways\n**List" elseif country(args)

'TWN' then return "*Highway system in Taiwan" elseif country(args)

'UKR' then return "*Roads in Ukraine\n\n*State Highways" elseif country(args)

'URY' then return "*National Routes of Uruguay" elseif country(args)

'USA' then local state = args.state or local stateName = ISO.name local national if args.type

nil then national = elseif args.type

'ADHS' then national = "*Appalachian Development Highway System" elseif args.type

'FFH' or args.type

'FH' or args.type

'FR' or args.type

'FH-named' then national = "*Forest Highway System" elseif args.type

'ISTEA' then national = "*High-Priority Corridors" elseif args.type

'NER' then national = "*New England road marking system" elseif args.type

'NHS' then national = "*National Highway System\n\n*Interstate\n*STRAHNET" elseif args.type

'NSB' or args.type

'NFSB' or args.type

'FSB' or args.type

'Byway' or args.type

'Npkwy' or args.type

'GRR' or args.type

'NTP' or args.type

'BRP' or args.type

'BCB' or args.type

'Back Country' then national = "*Scenic Byways\n\n*National\n*National Forest\n*BLM\n*NPS" elseif args.type

'Post' or args.type

'Postal' then national = "*Post Roads in the United States" elseif args.type

'Trail' or args.type

'Albert Pike' or args.type

'Arrowhead Trail' or args.type

'Dixie' or args.type

'Jackson' or args.type

'Jefferson' or args.type

'Jefferson Davis' or args.type

'LCT' or args.type

'Lincoln' or args.type

'National' or args.type

'Roosevelt' or args.type

'Spanish' or args.type

'National Old Trails Road' then national = "*Auto trails" elseif args.type

'Tour' then national = "*Great Lakes Circle Tour" elseif args.type

'USBR' then national = "*United States Bicycle Route System\n\n*List" elseif string.match(args.type, "^US")

'US' then national = "*United States Numbered Highway System\n\n*List\n*Special\n*Divided" elseif args.type

'I' or args.type

'Interstate' or args.type

'I-named' or args.type

'I' .. state or args.type

'BL' or string.match(args.type, "^BL")

'BL' or string.match(args.type, "^Fut")

'Fut' or string.match(args.type, "^IS")

'IS' or string.match(args.type, "^I %d")

'I 1' or (state

'OH' and args.type

'Turnpike') then national = "*Interstate Highway System\n\n*Main\n*Auxiliary\n*Suffixed\n*Business\n*Future" else national = end local function routes(args) local routes if state

'AL' or state

'AZ' or state

'CT' or state

'IL' or state

'ME' or state

'NV' or state

'NH' or state

'NY' or state

'OH' or state

'PA' or state

'TN' or state

'WA' or state

'WV' then routes = "state routes" elseif state

'FL' or state

'IN' or state

'NM' then routes = "state roads" elseif state

'KY' or state

'VA' then routes = "primary state highways" elseif state

'MI' then routes = "state trunkline highways" elseif state

'WI' then routes = "state trunk highways" else routes = "state highways" end return routes end local function whoCallsThemRoutes(args) local routes if state

'CA' or state

'MS' or state

'MO' or state

'NV' or state

'NH' or state

'NJ' or state

'NM' or state

'NY' or state

'OH' or state

'PA' or state

'WA' then routes = "Routes" else routes = "Highways" end return routes end local function three(args) return string.format("Interstate\n*US\n*State", stateName, whoCallsThemRoutes(args), stateName, routes(args), stateName) end local function shs(args) return string.format("*%s State Highway System\n\n*%s", stateName, three(args)) end local function shsLinked(args) return string.format("*%s State Highway System\n\n*%s", stateName, three(args)) end local states if state

then states = elseif state

'AL' or state

'ID' or state

'ND' or state

'WY' then states = shs(args) elseif state

'AK' then states = "*Alaska Routes\n\n*Interstate\n*Scenic Byways" elseif state

'AS' then states = "*Highways in American Samoa" elseif state

'AZ' then states = string.format("%s\n*Proposed\n*Former", shs(args)) elseif state

'AR' then states = string.format("*Arkansas Highway System\n\n*%s\n*Business\n*Spurs\n*Suffixed\n*Scenic\n*Heritage", three(args)) elseif state

'CA' then if args.type

'CR' then states = "*County routes in California" else states = string.format("*State highways in California\n\n*%s\n*Scenic\n*History\n*Pre‑1964\n*Unconstructed\n*Deleted\n*Freeways", three(args)) end elseif state

'CO' then states = string.format("%s\n*Scenic", shs(args)) elseif state

'CT' then states = string.format("%s\n**SSR\n**SR\n*Scenic", shs(args)) elseif state

'DE' then states = "*Delaware State Route System\n\n*List\n*Byways" elseif state

'DC' then states = "*Streets and Highways of Washington, DC\n\n*Interstate\n*US\n*DC\n*State-Named Streets" elseif state

'FL' then local county = args.county or if args.type

'CR' and county ~= then states = string.format("*County roads in Florida\n\n*County roads in %s County", county, county) elseif args.type

'CR' and county

then states = "*County roads in Florida" else states = string.format("%s\n**Former\n**Pre‑1945\n*Toll\n*Scenic", shsLinked(args)) end elseif state

'GA' then states = "*Georgia State Highway System\n\n*Interstate\n*US\n*State\n*\n*Special" elseif state

'GU' then states = "*Guam Highways" elseif state

'HI' then states = "*Routes in Hawaii" elseif state

'IL' then local county = args.county or if args.type

'CR' and county ~= then states = string.format("*%s County Roads", county) elseif args.type

'CR' and county

then states = "*County roads in Illinois" else states = string.format("%s\n*Tollways\n*Scenic", shsLinked(args)) end elseif state

'IN' then local county = args.county or if args.type

'CR' and county ~= then states = string.format("*%s County Roads", county) elseif args.type

'CR' and county

then states = "*County roads in Indiana" else states = string.format("%s\n*Scenic", shs(args)) end elseif state

'IA' then states = string.format("*Iowa Primary Highway System\n\n*%s\n*Secondary\n*Scenic", three(args)) elseif state

'KS' then states = string.format("%s\n*Spurs", shs(args)) elseif state

'KY' then states = string.format("%s\n*Parkways", shs(args)) elseif state

'LA' then local county = args.county or args.parish or if args.type

'PR' or args.type

'CR' then if county ~= then states = string.format("*%s Parish Roads", county) else states = "*Parish roads in Louisiana" end else states = string.format("%s\n*Scenic", shs(args)) end elseif state

'ME' then states = string.format("%s\n*Auto trails\n*Lettered highways", shsLinked(args)) elseif state

'MD' then local county = args.county or if args.type

'CR' and county ~= then states = string.format("* County Roads in %s County", county) elseif args.type

'CR' and county

then states = "*County roads in Maryland" else states = string.format("*Maryland highway system\n\n*%s\n*Scenic Byways", three(args)) end elseif state

'MA' or state

'MS' then states = string.format("%s", shsLinked(args)) elseif state

'MI' then local county = args.county or if args.type

'CR' and county ~= or args.type

'NFSB' and county ~= then states = string.format("*%s County Roads", county) elseif args.type

'CR' and county

or args.type

'NFSB' and county

then states = "*County roads in Michigan" elseif args.type

'CDH' then states = "*County-Designated Highways" else states = string.format("*Michigan State Trunkline Highway System\n\n*%s\n*Byways", three(args)) end elseif state

'MN' then local county = args.county or if args.type

'CR' or args.type

'CSAH' then if county ~= then states = string.format("*County roads of Minnesota\n\n*%s County", county, county) else states = "*County roads of Minnesota" end else states = string.format("*Minnesota Trunk Highway System\n\n*%s\n*Legislative\n*Scenic", three(args)) end elseif state

'MO' then states = string.format("%s\n*Supplemental", shsLinked(args)) elseif state

'MT' then states = string.format("*Montana Highway System\n\n*%s\n*Secondary", three(args)) elseif state

'NE' then states = string.format("%s\n*Link\n*Spur\n**State Spurs\n*Recreation", shsLinked(args)) elseif state

'NV' then states = string.format("%s\n*\n*Pre‑1976\n*Scenic", shs(args)) elseif state

'NH' then states = string.format("*New Hampshire Highway System\n\n*%s\n*Turnpikes", three(args)) elseif state

'NJ' then local county = args.county or if args.type

'CR' then if county ~= then states = string.format("*County Routes in %s County\n\n*System\n*500-series routes", county, county) else states = "*County routes in New Jersey\n\n*500-series routes" end else states = string.format("*New Jersey State Highway Routes\n\n*%s\n*Scenic Byways", three(args)) end elseif state

'NM' then states = string.format("%s\n*Scenic", shs(args)) elseif state

'NY' then local county = args.county or if args.type

'CR' then if county ~= then states = string.format("*County routes in New York\n\n*County Routes in %s County", county, county) else states = "*County routes in New York" end else states = string.format("*New York Highways\n\n*%s\n*Reference\n*Parkways", three(args)) end elseif state

'NC' then states = string.format("*North Carolina Highway System\n\n*%s\n*Scenic", three(args)) elseif state

'MP' then states = "*Northern Mariana Islands Highways" elseif state

'OH' then if args.type

'CR' then states = "*County roads in Ohio" else states = string.format("%s\n*Scenic", shs(args)) end elseif state

'OR' then states = string.format("*Oregon Highways\n\n*%s\n*Named\n*Scenic", three(args)) elseif state

'OK' then states = string.format("%s\n*Turnpikes", shs(args)) elseif state

'PA' then states = string.format("*Pennsylvania State Route System\n\n*%s\n*Scenic\n*Legislative", three(args)) elseif state

'PR' then states = "*Roads in Puerto Rico\n\n*List" elseif state

'RI' then states = "*Rhode Island Routes" elseif state

'SC' then states = string.format("%s\n*Scenic", shsLinked(args)) elseif state

'SD' then states = string.format("*South Dakota State Trunk Highway System\n\n*%s", three(args)) elseif state

'TN' then states = string.format("*Tennessee State Routes\n\n*%s", three(args)) elseif state

'TX' then states = string.format("*Highways in Texas\n\n*%s\n*Toll\n*Loops\n*Spurs\n*FM/RM\n*Park\n*Rec", three(args)) elseif state

'UT' then states = string.format("%s\n*\n*Minor\n*Scenic", shs(args)) elseif state

'VI' then states = "*USVI Highways" elseif state

'VT' then states = "*State highways in Vermont" elseif state

'VA' then states = "*Virginia Routes\n\n*Interstate\n*US\n*Primary\n*Secondary\n*Byways\n*History\n*HOT lanes" elseif state

'WA' then states = string.format("*State highways in Washington\n\n*%s\n*Scenic\n*Pre-1964\n*1964 renumbering\n*Former", three(args)) elseif state

'WV' then local county = args.county or if args.type

'CR' then if county ~= then states = string.format("*County Routes in West Virginia\n\n*%s County Routes", county, county) else states = "*County Routes in West Virginia" end else states = string.format("%s", shsLinked(args)) end elseif state

'WI' then if args.type

'CR' or args.type

'CTH' then states = "*County Trunk Highways" else states = string.format("*Wisconsin State Trunk Highway System\n\n*%s\n*Scenic\n*Rustic", three(args)) end end return string.format("%s\n\n%s", national, states) elseif country(args)

'ZAF' then return "*Numbered routes of South Africa"

elseif country(args)

'ARG' or country(args)

'BRB' or country(args)

'IRQ' or country(args)

'CHL' or country(args)

'PRY' then return string.format("*Highways in %s %s", the(args), name, the(args), name)

elseif country(args)

'BGD' or country(args)

'IMN' or country(args)

'ISL' or country(args)

'MDG' or country(args)

'NPL' or country(args)

'UGA' then return string.format("*Roads in %s %s", the(args), name, the(args), name) elseif country(args)

'DNK' or country(args)

'MNE' or country(args)

'PRK' or country(args)

'TUN' then return string.format("*Transport in %s %s\n\n*Motorways", the(args), name, the(args), name) elseif country(args)

'AZE' or country(args)

'BLR' or country(args)

'BLZ' or country(args)

'CPV' or country(args)

'CUB' or country(args)

'HND' or country(args)

'JAM' or country(args)

'KWT' or country(args)

'MDA' or country(args)

'PAK' or country(args)

'PRT' then return string.format("*Roads in %s %s", the(args), name) elseif country(args)

'ALB' or country(args)

'BGR' or country(args)

'COL' or country(args)

'CZE' or country(args)

'DOM' or country(args)

'ECU' or country(args)

'GUF' or country(args)

'HRV' or country(args)

'PER' or country(args)

'SVK' or country(args)

'SVN' or country(args)

'VEN' then return string.format("*Highways in %s %s", the(args), name) else return string.format("*Transport in %s %s", the(args), name) endend

function p.browselinks(frame) local args = getArgs(frame) if args.nobrowse ~= nil then return nil else return browselinks(args) end end

return p