Module:Road data/browse

local p = {} local getArgs = require('Module:Arguments').getArgs -- Import module function to work with passed arguments local parserModule = require "Module:Road data/parser" local parser = parserModule.parser

local function size(args) local country = args.country local state = args.state or args.province local type = args.type if country == 'MEX' then return "20x30" elseif country == 'CAN' then if state == 'AB' or state == 'QC' or state == 'SK' then return "20x30" elseif state == 'NS' then if (type == 'NS' or type == 'Hwy') then return "18" else return "x20" end elseif state == 'ON' then if type == 'ON' or type == 'Hwy' or type == 'Fwy' then return "20x30" elseif type == 'CR' or type == 'RR' then return "30x32" end end return "25x20" elseif country == 'USA' then if state == 'NY' and (type == 'NY 1927' or type == 'NY 1948') then return '20' end end return 'x20' end

local function shield(args) local size = size(args) local shield = parser(args, 'shield') if not shield or shield ==  then return  end return string.format("", shield, size) end

local function link(args) local abbr = parser(args, 'abbr') if not abbr then local page = mw.title.getCurrentTitle.prefixedText -- Get transcluding page's title return mw.ustring.format("Invalid type: %s ", args.type, page) end local link = parser(args, 'link') if not link or link == '' then return mw.ustring.format("%s ", abbr) else return mw.ustring.format("%s ", link, abbr) end end

local function previousRoute(args) local shieldText = shield(args) local linkText = link(args) local cell = mw.html.create('td'):css( {width = "45%", ["vertical-align"] = "middle", padding = "0", ["text-align"] = "left"} ) cell:wikitext("← " .. shieldText .. ' ' .. linkText) return cell end

local function nextRoute(args) local shieldText = shield(args) local linkText = link(args) local cell = mw.html.create('td'):css( {width = "45%", ["vertical-align"] = "middle", padding = "0", ["text-align"] = "right"} ) cell:wikitext(linkText .. ' ' .. shieldText .. " →") return cell end

function p._browse(args) local browseRow = mw.html.create('tr') local country = args.country local state = args.state or args.province local county = args.county local previousData = {country = country, state = state, county = county, type = args.previous_type, route = args.previous_route, dab = args.previous_dab} local nextData = {country = country, state = state, county = county, type = args.next_type, route = args.next_route, dab = args.next_dab} local previousRoute = previousRoute(previousData) local nextRoute = nextRoute(nextData) local centerRoute = mw.html.create('td'):css( {["text-align"] = "center", ["white-space"] = "nowrap", width = "10%", ["vertical-align"] = "middle", padding = "0"} ) local route = args.browse_route if route then centerRoute:wikitext("" .. route .. "") end browseRow:node(previousRoute):node(centerRoute):node(nextRoute) return tostring(browseRow) end

function p.browse(frame) local args = getArgs(frame) args.browse_route = args.route return p._browse(args) end

return p