Module:Infobox road/route
This module pulls data from road data strings, such as Module:Road data/strings/USA, and passes it through three functions that draw the necessary route marker …
This module pulls data from road data strings, such as Module:Road data/strings/USA, and passes it through three functions that draw the necessary route marker images and displays the route name in {{Infobox road}}.
Output examples
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
local p = {}
local format = mw.ustring.format
require('strict')
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 = "72px"
end
local shield = parser(args, 'banner')
local alt = parser(args, 'banner')
if not shield or shield == '' then
return nil
else
return string.format('[[File:%s|%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 = "154x72px"
verticalSize = "72x154px"
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('[[File:%s|%s|alt=%s]]', v, shield_size(v), alt)
end
return table.concat(res, ' ')
else
return string.format('[[File:%s|%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
function p._shields(args)
local style = args.style
local banner = banner(args, style)
local shield = shield(args, style)
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; display: inline-block; vertical-align: baseline; line-height: 0;')
container:tag('p'):cssText('margin:0.1em 0 0 0;'):wikitext(banner)
container:tag('p'):cssText('margin:0 0 0.1em;'):wikitext(shield)
return tostring(container)
end
end
function p.shields(frame)
local args = getArgs(frame)
return p._shields(args);
end
function p._names(args)
local name = name(args)
return name
end
function p.names(frame)
local args = getArgs(frame)
return p._names(args);
end
return p
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.