local p = {}   local format = mw.ustring.format require('Module:No globals') local getArgs = require('Module:Arguments').getArgs	 local parserModule = require 'Module:Road data/parser' local parser = parserModule.parser  local function banner(args, style) 	if args.marker_image then return nil end 	 	local bannerSize 		if style == 'small' then 			bannerSize = "40px" 		else 			bannerSize = "70px" 		end 	 	local shield = parser(args, 'banner') 	local alt = parser(args, 'banner')  	if not shield or shield ==  then 		return nil 	else 		return string.format('%s|alt=%s', shield, bannerSize, alt) 	end end  local function shield(args, style)  	if args.marker_image then return args.marker_image end 	 	local horizontalSize 	local verticalSize 		if style == 'small' then 			horizontalSize = "90x40px" 			verticalSize = "40x90px" 		else 			horizontalSize = "150x70px" 			verticalSize = "70x150px" 		end  	local shield = parser(args, 'shieldmain') or parser(args, 'shield') or  	 	local label = parser(args, 'name') or parser(args, 'abbr') or 	local alt = label .. ' marker' 	local orientation = parser(args, 'orientation') 	 	local function simpleSize(args) 		if orientation and orientation == 'upright' then 			return verticalSize 		else 			return horizontalSize 		end 	end 	 	local function shield_size(image_name, orientation) 		local image = 'File:' .. image_name 		local title = mw.title.new(image)  		local width = title.file.width 		local height = title.file.height 		 		if (orientation and orientation == 'upright') or height > width then 			return verticalSize 		else 			return horizontalSize 		end 	end 	 	 	 	if not shield or shield ==  then 		return nil 	elseif type(shield) == 'table' then 		local res = {} 		local sizes = {} 		for i,v in ipairs(shield) do 			sizes[i] = v 			res[i] = string.format('%s|alt=%s', v, shield_size(v), alt) 		end     	return table.concat(res, ' ') 	else 		return string.format('%s|alt=%s', shield, simpleSize(args), alt) 	end end  -- Links/abbreviations local function name(args) 	local name = args.name or parser(args, 'name') or parser(args, 'abbr') 	return name end  function p._routeInfo(args) 	 	local style = args.style 	local banner = banner(args, style) 	local shield = shield(args, style) 	local name = name(args)  	if not args.type and not args.route and not args.name and not args.marker_image then 		local container = nil 	else local container = mw.html.create('div'):cssText('text-align:center;') 		if shield == nil or args.marker_image == 'none' or args.name and not args.marker_image and not args.type and not args.route then  			container:tag('p'):cssText('margin:0.1em;'):wikitext(name) 		elseif args.marker_image ~=  and args.name ==  or args.name == nil and not args.type and not args.route then 			container:tag('p'):cssText('margin:0.1em;'):wikitext(shield) 		elseif args.country == 'AUS' then 			container:tag('p'):cssText('margin:0.1em;'):wikitext(name) 			container:tag('p'):cssText('margin:0.1em 0 0 0;'):wikitext(shield) 		else 			container:tag('p'):cssText('margin:0.1em 0 0 0;'):wikitext(banner) 			container:tag('p'):cssText('margin:0 0 0.1em;'):wikitext(shield) 			container:tag('p'):cssText('margin:0.1em;'):wikitext(name) 		end 		return tostring(container) 	end end  function p.routeInfo(frame) 	local args = getArgs(frame) 	return p._routeInfo(args); end  return p