Module:Sandbox/BrandonXLF/3: Difference between revisions

Content deleted Content added
No edit summary
Tag: Reverted
Theme navbox-image
 
(6 intermediate revisions by the same user not shown)
Line 1:
-- Sandbox, do not delete
require('strict')
 
return {
local p = {}
aria_label = 'Navbox',
 
nowrap_item = '%s<span class="nowrap">%s</span>',
local getArgs = require('Module:Arguments').getArgs
templatestyles = mw.getCurrentFrame():extensionTag{
local parserModule = require('Module:Road data/parser')
name = 'templatestyles', args = { src = 'User:BrandonXLF/styles2.css' }
local parser = parserModule.parser
},
 
hlist_templatestyles = 'Hlist/styles.css',
local types = {
plainlist_templatestyles = 'Plainlist/styles.css',
TCH = '[[File:TCH-blank.svg|15px]] [[Trans-Canada Highway]]',
-- do not localize marker table
Yellowhead = '[[File:Yellowhead Blank.svg|15px]] [[Yellowhead Highway]]',
marker = {
['2'] = 'Interprovincial Highway 2'
oddeven = '\127_ODDEVEN_\127',
restart = '\127_ODDEVEN0_\127',
regex = '\127_ODDEVEN(%d?)_\127'
},
category = {
orphan = '[[Category:Navbox orphans]]',
horizontal_lists = 'Navigational boxes without horizontal lists',
background_colors = 'Navboxes using background colours',
illegible = 'Potentially illegible navboxes',
borders = 'Navboxes using borders',
},
keyword = {
border_subgroup = 'subgroup',
border_child = 'child',
border_none = 'none',
evenodd_swap = 'swap',
navbar_off = 'off',
navbar_plain = 'plain',
nocat_false = 'false',
nowrapitems_yes = 'yes',
orphan_yes = 'yes',
state_collapsed = 'collapsed',
state_off = 'off',
state_plain = 'plain',
subgroups = {'subgroup', 'child', ''},
subpage_doc = 'doc',
subpage_sandbox = 'sandbox',
subpage_testcases = 'testcases',
tracking_no = 'no'
},
class = {
autocollapse = 'autocollapse',
collapsible = 'mw-collapsible',
collapsed = 'mw-collapsed',
-- Warning
navbox = 'navbox', -- WMF currently hides 'navbox' from mobile,
-- so you probably shouldn't change the navbox class.
navbox_abovebelow = 'navbox-abovebelow notheme',
navbox_group = 'navbox-group notheme',
navbox_image = 'navbox-image',
navbox_inner = 'navbox-inner notheme',
navbox_list = 'navbox-list notheme',
navbox_list_with_group = 'navbox-list-with-group',
navbox_part = 'navbox-', -- do not l10n
navbox_styles = 'navbox-styles',
navbox_subgroup = 'navbox-subgroup',
navbox_title = 'navbox-title notheme', -- l10n only if you change pattern.navbox_title below
navbox_odd_part = 'odd', -- do not l10n
navbox_even_part = 'even', -- do not l10n
nomobile = 'nomobile',
nowraplinks = 'nowraplinks',
noviewer = 'noviewer' -- used to remove images from MediaViewer
},
pattern = {
listnum = '^list(%d+)$',
class = 'class',
sandbox = '/sandbox$',
navbox = 'Template:Navbox',
nowrap = '^<span class="nowrap">',
style = 'style$',
navbox_title = '<th[^>]*"navbox%-title"',
hlist = 'hlist',
plainlist = 'plainlist',
},
arg = {
above = 'above',
aboveclass = 'aboveclass',
abovestyle = 'abovestyle',
basestyle = 'basestyle',
bodyclass = 'bodyclass',
bodystyle = 'bodystyle',
border = 'border',
below = 'below',
belowclass = 'belowclass',
belowstyle = 'belowstyle',
evenodd = 'evenodd',
evenstyle = 'evenstyle',
group1 = 'group1',
group2 = 'group2',
group_and_num = 'group%d',
groupstyle_and_num = 'group%dstyle',
groupclass = 'groupclass',
groupstyle = 'groupstyle',
groupwidth = 'groupwidth',
innerstyle = 'innerstyle',
image = 'image',
imageclass = 'imageclass',
imageleft = 'imageleft',
imageleftstyle = 'imageleftstyle',
imagesetyle = 'imagestyle',
list_and_num = 'list%d',
listclass_and_num = 'list%dclass',
liststyle_and_num = 'list%dstyle',
list1padding = 'list1padding',
listclass = 'listclass',
listpadding = 'listpadding',
liststyle = 'liststyle',
name = 'name',
navbar = 'navbar',
navboxclass = 'navboxclass',
nocat = 'nocat',
nowrapitems = 'nowrapitems',
oddstyle = 'oddstyle',
orphan = 'orphan',
state = 'state',
style = 'style',
templatestyles = 'templatestyles',
child_templatestyles = 'child templatestyles',
title = 'title',
titleclass = 'titleclass',
titlestyle = 'titlestyle',
tracking = 'tracking'
},
-- names of navbar arguments
navbar = {
name = 1,
fontstyle = 'fontstyle',
mini = 'mini'
}
}
 
local function route(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 = parser(parserArgs, 'name') or parser(parserArgs, 'abbr') or ''
label = (routeLoc ~= currProvince and (routeLoc .. ' ') or '') .. label
 
local link = parser(parserArgs, 'link')
local alt = label .. ' marker'
if type(shield) == 'table' then
shield = shield[1]
end
out = out .. string.format('[[File:%s|15px|alt=%s]]', shield, alt)
if not link or link == '' then
out = out .. ' ' .. label
else
out = out .. ' ' .. string.format('[[%s|%s]]', link, label)
end
return out
end
 
function p.route(frame)
return route(
frame.args[1],
frame.args.type,
frame.args.province,
frame.args.current_province or frame.args.province
)
end
 
local function nav(prefix, label, currProvince, args)
local index = 1
local out = ''
repeat
local route = args[prefix .. index] or (index == 1 and args[prefix] or '')
local routeType = args[prefix .. index .. '_type'] or (index == 1 and args[prefix .. '_type'] or '')
local routeLoc = args[prefix .. index .. '_province'] or (index == 1 and args[prefix .. '_province'] or '')
if index ~= 1 then
out = out .. '<hr>'
end
out = out .. route(route, routeType, routeLoc, currProvince)
index = index + 1
until not args[prefix .. index]
return label .. (index - 1 > 1 and 'routes' or 'route') .. '\n' .. out
end
 
function p.nav(frame)
return nav(
frame.args[1],
frame.args.label,
frame.args.current_province,
getArgs(frame, { parentOnly = true })
)
end
 
function p.main(frame)
local args = getArgs(frame)
local type = args.type
local route = args.curr
local routeType = args.curr_type
local routeLoc = args.curr_province
local prev, prevWord = nav('prev', routeLoc, args)
local next, nextWord = nav('next', routeLoc, args)
return string.format(
frame:preprocess(
[[{{s-start}}
|-
! colspan=3 | %s
|- style="text-align: center;"
| style="width: 30%%;" | Previous&nbsp;%s<br>%s
| style="width: 30%%;" | %s
| style="width: 30%%;" | Next&nbsp;%s<br>%s
{{s-end}}]]
),
types[type] or args.title or error('Type or title missing'),
prevWord,
prev,
route(route, routeType, routeLoc, routeLoc),
nextWord,
next
)
end
 
return p