Open main menu
Home
Random
Donate
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Infobox road/sandbox
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} local getArgs = require('Module:Arguments').getArgs local roadDataModule = require("Module:Road data") local util = require("Module:Road data/util") local yesno = require('Module:Yesno') local langModule = require('Module:Lang') local routeModule = require("Module:Infobox road/route") local lengthModule = require("Module:Infobox road/length") local parserModule = require("Module:Road data/parser") local parser = parserModule.parser local format = mw.ustring.format local 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 country end -- HEADER COLORS function p._headerStyle(frame) local args = getArgs(frame) local header if args.header_type == nil then header = args.header_type else header = string.lower(args.header_type) end local deleted = args.decommissioned or args.deleted or header == "former" local uc = header == "under construction" or header == "const" or header == "uc" local minor = header == "minor" local hist = header == "hist" or header == "historic" or header == "historical" or header == "scenic" local color = parser(args, 'color') local freeway = header == "freeway" if freeway then return "header-MUTCDblue" elseif uc then return "header-uc" elseif minor then return "header-minor" elseif deleted then return "header-deleted" elseif hist then return "header-hist" elseif color then return "header-" .. color elseif args.state or args.province or args.country then local country = country(args) return "header-" .. country or "header-default" else return "header-default" end end function p.headerStyle(frame) local args = getArgs(frame) return p._headerStyle(args) end -- SECOND IMAGE local function photo(args) local country = country(args) local photo = args.photo or args.image local width = args.photo_wide or args.image_width or "290px" local alt = args.photo_alt or args.image_alt or photo if photo == nil then return nil elseif country == "USA" then return nil else return string.format('[[File:%s|%s|alt=%s]]', photo, width, alt) end end function p.photo(frame) local args = getArgs(frame) return photo(args) end -- TRANSLATION local function translate(args, lang) local lang = parser(args, 'lang') or args.lang or 'none' local translation = args.translation or parser(args, 'translation') or '' if country(args) == "PAK" then return frame:expandTemplate({title = 'Nastaliq', args = {translation}}) elseif translation ~= '' and lang == 'none' then return translation elseif country(args) == "HUN" then local nominal = require( "Module:Road data/masks/HUN" ) local routeNum local leading if string.len(args.route) > 2 then routeNum = string.match(args.route, "%d%d$", 0) leading = string.match(args.route, "(%d*)%d%d$", 0) else routeNum = args.route leading = '' end if args.type == "M" then return langModule._lang({"hu", "M" .. leading .. nominal[routeNum] .. " autópálya"}) elseif args.type == "Mb" then return langModule._lang({"hu", "M" .. leading .. nominal[routeNum] .. " autóút"}) elseif args.type == "MR" then return langModule._lang({"hu", leading .. nominal[routeNum] .. " főút"}) elseif args.type == "Mb" then return langModule._lang({"hu", leading .. nominal[routeNum] .. " közút"}) end elseif lang == "ar" and translation ~= '' then local route = args.route local arabicModule = require( "Module:Convert to eastern arabic numerals" ) local arabic = arabicModule._convert({route}) local translated = string.gsub( translation, route, arabic) return langModule._lang({lang, translated}) elseif translation ~= '' and lang ~= 'none' then return langModule._lang({lang, translation}) else return nil end end function p.translate(frame) local pframe = frame:getParent() local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template local lang = config.lang return translate(args, lang) end -- MAINTAINED BY local function maint(args) local maint = args.maint or parser(args, 'maint') or nil if maint == "none" or nil then return nil else return maint end end function p.maint(frame) local args = getArgs(frame) return maint(args) end -- DEFINED BY LAW local function law(args) local law = parser(args, 'law') or nil if law == nil then return nil else return law end end function p.law(frame) local args = getArgs(frame) return law(args) end -- EXISTED function p._existed(args) local formed = args.established or args.formed or nil local deleted = args.decommissioned or args.deleted or nil if formed == nil then return nil elseif deleted == nil then return formed .. "–present" else return formed .. "–" .. deleted end end function p.existed(frame) local args = getArgs(frame) return p._existed(args) end -- TIME PERIOD local function period(args) local infobox_args = {} infobox_args['bodystyle'] = 'border-collapse:collapse;' infobox_args['child'] = 'yes' infobox_args['label1'] = "Time period" infobox_args['data1'] = args.time_period if args.time_period then infobox_args['label2'] = "Cultural significance" infobox_args['data2'] = args.significance infobox_args['label3'] = "Known for" infobox_args['data3'] = args.known_for infobox_args['label4'] = "Related routes" infobox_args['data4'] = args.related else infobox_args['label3'] = "Known for" infobox_args['data3'] = args.known_for end return frame:expandTemplate ({title='Infobox', args = infobox_args}) end local function period_params(args) if args.time_period or args.known_for then return true else return false end end function p.period(frame) local args = getArgs(frame) if period_params(args) == false then return nil else return period(args) end end -- ALLOCATION local function allocation(args) local country = country(args) if country == "AUS" then return "[[Route number#Australia|Allocation]]" else return "Component<br>highways" end end function p.allocation(frame) local args = getArgs(frame) return allocation(args) end -- SPUR OF local function spurOf(args) local jctModule = require("Module:Jct") local state = args.state or args.province local country = args.country local county = args.county local parentType = args.spur_type local parentRoute = args.spur_of local aux = parser(args, 'aux') or "Auxiliary route" or nil local jct = jctModule.roadlink({state = state, country = country, county1 = county, parentType, parentRoute}) if not parentType and not parentRoute then return nil elseif type(aux) == "table" then return "Auxiliary route of " .. jct else return tostring(aux) .. " of " .. jct end end function p.spurOf(frame) local args = getArgs(frame) return spurOf(args) end -- PART OF local function partOf(args) if args["e-road"] or args.ahn or args.tahn or args.mrn then local infobox_args = {} infobox_args['bodystyle'] = 'border-collapse:collapse;' infobox_args['child'] = 'yes' if args["e-road"] then local eshield = args["e-road-shield"] or '' infobox_args['data1'] = eshield .. " Part of " .. args["e-road"] end if args.ahn then local ashield = args["ahn-shield"] or '' infobox_args['data2'] = ashield .. " Part of " .. args.ahn end if args.tahn then local tshield = args["tahn-shield"] or '' infobox_args['data2'] = tshield .. " Part of " .. args.tahn end if args.mrn then local mshield = args["mrn-shield"] or '' infobox_args['data2'] = mshield .. " Part of " .. args.mrn end return frame:expandTemplate ({title='Infobox', args = infobox_args}) else return nil end end function p.partOf(frame) local args = getArgs(frame) return partOf(args) end -- HIGHWAY SYSTEM LINKS local function system(args) if args.system1 then local infobox_args = { ['child'] = "yes", ['decat'] = "yes", ['bodystyle'] = "border-collapse:collapse;" } local i = 1 while (1) do local systemClassn = "class" .. i local systemDatan = "data" .. i local systemArgn = args['system' .. i] infobox_args[systemClassn] = "hlist" infobox_args[systemDatan] = systemArgn if i == 10 then break else i = i + 1 end end return frame:expandTemplate ({title='Infobox', args = infobox_args}) end end function p.system(frame) local args = getArgs(frame) return system(args) end -- ROUTE INFORMATION HEADER local function info(args) local maint = maint(args) local law = law(args) local period = period_params(args) local existed = args.established or args.formed or nil local spur = spurOf(args) local part = partOf(args) if period == true or spur ~= nil or part ~= nil or existed ~= nil or maint ~= nil or args.section or args.length_mi or args.length_km or args.allocation or args.history or args.restrictions or args.tourist or args.status or args.margary then return "Route information" else return nil end end function p.info(frame) local args = getArgs(frame) return info(args) end -- HIGHWAY SYSTEM HEADER local function highwaySystem(args) if args.nobrowse then return nil end local country = country(args) or args.countries if country == nil then return nil elseif country == "GBR" or country == "ENG" or country == "NIR" or country == "SCT" or country == "WLS" or country == "GGY" or country == "IMN" or country == "JEY" or country == "AIA" or country == "BMU" or country == "IOT" or country == "VGB" or country == "CYM" or country == "FLK" or country == "GIB" or country == "MSR" or country == "PCN" or country == "SHN" or country == "SGS" or country == "TCA" then return "Road network" else return "Highway system" end end function p.highwaySystem(frame) local args = getArgs(frame) return highwaySystem(args) end -- PREVIOUS ROUTE AND NEXT ROUTE BROWSE local function browse(args) if args.nobrowse then return nil end local previousRoute = args.previous_route local nextRoute = args.next_route -- TODO What happens if neither are present?? if previousRoute or nextRoute then local box = mw.html.create('table'):cssText("width:100%; background:none; border-collapse:collapse; display:inline-table;") local boxModule = require "Module:Road data/browse/sandbox" -- remove "/sandbox" when live! local primary = boxModule._browse(args) box:wikitext(primary) return tostring(box) end end function p.browse(frame) local args = getArgs(frame) return browse(args) end local function extended(args) local extended = args.browse if args.nobrowse or extended == nil then return nil else local box = mw.html.create('table'):cssText("width:100%; background:none; border-collapse:collapse; display:inline-table;") box:wikitext(extended) return tostring(box) end end function p.extended(frame) local args = getArgs(frame) return extended(args) end return p
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Infobox road/sandbox/doc
(
edit
)