Module:Interprovincial highway
| This module depends on the following other modules: |
This modules is used by {{Interprovincial highway}}.
require('strict')
local p = {}
local parser = require('Module:Road data/parser').parser
local getArgs = require('Module:Arguments').getArgs
local data = mw.loadData('Module:Interprovincial highway/data')
-- Generate a link to a route
local function makeRoute(route, routeType, routeLoc, currProvince)
local out = ''
local parserArgs = {
route = route,
type = routeType,
province = routeLoc
}
local shield = parser(parserArgs, 'shieldmain') or parser(parserArgs, 'shield') or ''
local label = (routeLoc ~= currProvince and (routeLoc .. ' ') or '')
.. (parser(parserArgs, 'name') or parser(parserArgs, 'abbr') or '')
local link = parser(parserArgs, 'link')
local alt = label .. ' marker'
if type(shield) == 'table' then
shield = shield[1]
end
if shield and shield ~= '' then
out = out .. string.format('[[File:%s|15px|alt=%s]]', shield, alt) .. ' '
end
if not link or link == '' then
out = out .. label
else
out = out .. string.format('[[%s|%s]]', link, label)
end
if out ~= '' then
out = "'''" .. out .. "'''"
end
return out
end
-- Generate the content for a prev/next navigation table cell
local function makeNav(prefix, label, currProvince, args)
local out = ''
local index = 1
local paramPrefix = prefix
while args[paramPrefix] and args[paramPrefix] ~= '' do
local route = args[paramPrefix]
local routeType = args[paramPrefix .. '_type']
local routeLoc = args[paramPrefix .. '_province']
if index ~= 1 then
out = out .. '<hr>'
end
out = out .. makeRoute(route, routeType, routeLoc, currProvince)
index = index + 1
paramPrefix = prefix .. index
end
if out == '' then
out = "'''Terminus'''"
end
return label .. ' ' .. (index - 1 > 1 and 'routes' or 'route') .. '<br>' .. out
end
-- Generate the name for a highway type
local function getName(type)
return data.types[type] or require('Module:Error').error{'Unknown name'}
end
-- Generate highway rows (headers and content cells)
function p.rows(frame)
local args = getArgs(frame)
local out = ''
local current = makeRoute(
args.curr,
args.curr_type,
args.curr_province,
args.curr_province or args.province
)
local index = 1
local paramPrefix = ''
repeat
out = out .. '|-\n'
out = out .. '! colspan=3 | ' .. getName(args[paramPrefix .. 'name']) .. '\n'
out = out .. '|- style="text-align: center;"' .. '\n'
out = out .. '| style="width: 30%;" | ' .. makeNav(paramPrefix .. 'prev', 'Previous', args.curr_province, args) .. '\n'
out = out .. '| style="width: 30%;" | ' .. current .. '\n'
out = out .. '| style="width: 30%;" | ' .. makeNav(paramPrefix .. 'next', 'Next', args.curr_province, args) .. '\n'
index = index + 1
paramPrefix = 'hwy' .. index .. '_'
until (not args[paramPrefix .. 'name']) or args[paramPrefix .. 'name'] == ''
return out
end
-- Show the supported types in a table
function p.supported(frame)
local data = mw.loadData('Module:Interprovincial highway/data')
local post = 'Types retrieved from [[Module:Interprovincial highway/data]] ('
.. frame:expandTemplate{ title = 'edit', args = { 'Module:Interprovincial highway/data' } } .. ').'
local tableEl = mw.html.create('table'):addClass('wikitable')
local headerRow = tableEl:tag('tr')
headerRow:tag('th'):wikitext('Value')
headerRow:tag('th'):wikitext('Title')
for name, title in pairs(data.types) do
local row = tableEl:tag('tr')
row:tag('td'):tag('code'):wikitext(name)
row:tag('td'):wikitext("'''" .. title .. "'''")
end
return tostring(tableEl) .. post
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.