Module:Infobox road small/sandbox

local p = {} local getArgs = require('Module:Arguments').getArgs local roadDataModule = require("Module:Road data") local util = require("Module:Road data/util") local parserModule = require("Module:Road data/parser") local parser = parserModule.parser local format = mw.ustring.format local frame = mw.getCurrentFrame local templatestyles = 'Infobox road/styles.css'

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

local size = "40px"

local function banner(args) if args.marker_image then return nil end if args.shielderr then return nil end local shield = parser(args, 'banner') if not shield or shield == '' then return nil end local alt = parser(args, 'banner') return string.format('', shield, size, alt) end

local function shield(args) if args.marker_image then return args.marker_image end

local shield = parser(args, 'shieldmain') or parser(args, 'shield') if not shield or shield == '' then return nil end local label = parser(args, 'name') or parser(args, 'abbr') or '' local alt = label .. ' marker' local orientation = parser(args, 'orientation') 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 size else return 'x' .. size end end if type(shield) == 'table' then local res = {} local sizes = {} for i,v in ipairs(shield) do			sizes[i] = v			res[i] = string.format('', v, shield_size(v), alt) end return table.concat(res, ' ') else return string.format('', shield, shield_size(shield, orientation), 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 banner = banner(args) local shield = shield(args) 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.infobox(args) local lengthModule = require "Module:Infobox road/length" local IBR = require "Module:Infobox road/sandbox" local headerStyle = IBR.headerStyle(args)

local infobox = {} infobox['above'] = p._routeInfo(args) infobox['subheader'] = args.alternate_name infobox['subheader2'] = " " infobox['label1'] = "Location" infobox['data1'] = args.location infobox['label2'] = "Length" infobox['data2'] = lengthModule._length(num, args) infobox['label3'] = "Existed" infobox['data3'] = IBR._existed(args) infobox['label4'] = "History" infobox['data4'] = args.history if country(args) == "AUS" then infobox['label5'] = "Route number" infobox['data5'] = args.route end infobox['label6'] = "Tourist routes" infobox['data6'] = args.tourist

return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. frame:expandTemplate ({title='Infobox', args = infobox}) end

function p.infobox(frame) local args = getArgs(frame) return p.infobox(args) end

return p