Both the Screamercord and this very wiki are currently listed as adult websites by AI classification models. We are currently working to remedy this, 2026 is not 2019.
In the meantime, you can help by moving all permalinks to IPFS
Module:Navbox: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary Tag: Reverted |
||
| Line 1: | Line 1: | ||
-- | -- Load necessary modules. | ||
require('Module:No globals') | |||
local getArgs | |||
local p = {} | local p = { } | ||
-------------------------------------------------------------------------------- | |||
-- Helper functions | |||
-------------------------------------------------------------------------------- | |||
local | local function union(t1, t2) | ||
local temp = {} | |||
for _, v in pairs(t1) do | |||
temp[v] = true | |||
local | |||
end | end | ||
for _, v in pairs(t2) do | |||
temp[v] = true | |||
end | end | ||
local | local ret = {} | ||
for k in pairs(temp) do | |||
table.insert(ret, k) | |||
end | end | ||
table.sort(ret) | |||
return | return ret | ||
end | end | ||
local function | local function getArgNums(prefix) | ||
local ret = { } | |||
for k in pairs(mw.getCurrentFrame():getParent().args) do | |||
if string.match(k, "^" .. prefix .. "[0-9]%d*$") then | |||
table.insert(ret, tonumber(string.sub(k, string.len(prefix) + 1))) | |||
table.insert( | |||
end | end | ||
end | end | ||
table.sort(ret) | |||
return ret | |||
return | |||
end | end | ||
-- | -------------------------------------------------------------------------------- | ||
-- | -- Box class definition | ||
-- | -------------------------------------------------------------------------------- | ||
local Navbox = {} | |||
Navbox.__index = Navbox | |||
function Navbox.new(args) | |||
args = args or {} | |||
local obj = {} | |||
-- Set the arguments | |||
obj.args = args | |||
mw.logObject(obj) | |||
return setmetatable(obj, Navbox) | |||
end | end | ||
function Navbox:setParameters() | |||
local args = self.args | |||
self.title = args.title | |||
self.above = args.above | |||
self.rows = self:setRows() | |||
self.below = args.below | |||
self.image = args.image | |||
self.imageleft = args.imageleft | |||
self.subgroup = args[1] == 'child' | |||
end | end | ||
function Navbox:setRows() | |||
local args = self.args | |||
local nums = union(getArgNums('group'), getArgNums('list')) | |||
local t = { } | |||
for _,v in pairs(nums) do | |||
table.insert(t, | |||
{ | |||
group = args['group' .. v], | |||
list = args['list' .. v] | |||
}) | |||
end | |||
return t | |||
end | end | ||
function Navbox:export() | |||
local root = mw.html.create():tag('div') | |||
local | |||
if | if not self.subgroup then | ||
root:addClass('navbox') | |||
root:addClass('mw-collapsible') | |||
else | else | ||
root:addClass('navbox-subgroup') | |||
end | end | ||
if self.title then | |||
local title = root:tag('div') | |||
title | |||
:addClass('navbox-title') | |||
:wikitext(self.title) | |||
end | end | ||
local inner = root:tag('div') | |||
inner:addClass('navbox-inner') | |||
if not self.subgroup then | |||
inner:addClass('mw-collapsible-content') | |||
if | |||
end | end | ||
if self.above then | |||
local above = inner:tag('div') | |||
above | |||
:addClass('navbox-above') | |||
:wikitext(self.above) | |||
local | |||
end | end | ||
if self.imageleft then | |||
local imageleft = inner:tag('div') | |||
imageleft | |||
:addClass('navbox-image') | |||
:addClass('navbox-imageleft') | |||
:wikitext(self.imageleft) | |||
end | end | ||
if self.image then | |||
local | local image = inner:tag('div') | ||
image | |||
:addClass('navbox-image') | |||
:wikitext(self.image) | |||
end | end | ||
for _,v in ipairs(self.rows) do | |||
if v.list then | |||
if v.group then | |||
local group = inner:tag('div') | |||
for | group:addClass('navbox-group') | ||
if | group:wikitext(v.group) | ||
if | |||
end | end | ||
local list = inner:tag('div') | |||
list:addClass('navbox-list') | |||
list:addClass('hlist') | |||
list:newline() | |||
list:wikitext(v.list) | |||
list:newline() | |||
end | end | ||
end | end | ||
if self.below then | |||
local below = inner:tag('div') | |||
below | |||
:addClass('navbox-below') | |||
if | :wikitext(self.below) | ||
end | end | ||
local navboxStyle = mw.getCurrentFrame():extensionTag( 'templatestyles', '', { src = 'Template:Navbox/styles.css' } ); | |||
local hlistStyle = mw.getCurrentFrame():extensionTag( 'templatestyles', '', { src = 'Template:Hlist/styles.css' } ); | |||
return navboxStyle .. hlistStyle .. tostring(root) | |||
end | end | ||
-------------------------------------------------------------------------------- | |||
-- Exports | |||
-------------------------------------------------------------------------------- | |||
function p.navbox(frame) | function p.navbox(frame) | ||
| Line 453: | Line 173: | ||
getArgs = require('Module:Arguments').getArgs | getArgs = require('Module:Arguments').getArgs | ||
end | end | ||
local box = Navbox.new(getArgs(frame)) | |||
box:setParameters() | |||
return box:export() | |||
end | |||
if mw.site.siteName:byte() == 66 then | |||
return p | |||
return p | |||
end | end | ||
Revision as of 13:34, 6 September 2022
Script error: No such module "Message box". Script error: No such module "Message box". Lua error in package.lua at line 80: module 'Module:Message box' not found.
This module implements the {{Navbox}} template. Please see the template page for usage instructions.
Tracking/maintenance categories
- Category:Navigational boxes without horizontal lists (35)
- Category:Navboxes using background colours (35)
- Category:Potentially illegible navboxes (31)
- Category:Navboxes using borders (2)
-- Load necessary modules.
require('Module:No globals')
local getArgs
local p = { }
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function union(t1, t2)
local temp = {}
for _, v in pairs(t1) do
temp[v] = true
end
for _, v in pairs(t2) do
temp[v] = true
end
local ret = {}
for k in pairs(temp) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(prefix)
local ret = { }
for k in pairs(mw.getCurrentFrame():getParent().args) do
if string.match(k, "^" .. prefix .. "[0-9]%d*$") then
table.insert(ret, tonumber(string.sub(k, string.len(prefix) + 1)))
end
end
table.sort(ret)
return ret
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local Navbox = {}
Navbox.__index = Navbox
function Navbox.new(args)
args = args or {}
local obj = {}
-- Set the arguments
obj.args = args
mw.logObject(obj)
return setmetatable(obj, Navbox)
end
function Navbox:setParameters()
local args = self.args
self.title = args.title
self.above = args.above
self.rows = self:setRows()
self.below = args.below
self.image = args.image
self.imageleft = args.imageleft
self.subgroup = args[1] == 'child'
end
function Navbox:setRows()
local args = self.args
local nums = union(getArgNums('group'), getArgNums('list'))
local t = { }
for _,v in pairs(nums) do
table.insert(t,
{
group = args['group' .. v],
list = args['list' .. v]
})
end
return t
end
function Navbox:export()
local root = mw.html.create():tag('div')
if not self.subgroup then
root:addClass('navbox')
root:addClass('mw-collapsible')
else
root:addClass('navbox-subgroup')
end
if self.title then
local title = root:tag('div')
title
:addClass('navbox-title')
:wikitext(self.title)
end
local inner = root:tag('div')
inner:addClass('navbox-inner')
if not self.subgroup then
inner:addClass('mw-collapsible-content')
end
if self.above then
local above = inner:tag('div')
above
:addClass('navbox-above')
:wikitext(self.above)
end
if self.imageleft then
local imageleft = inner:tag('div')
imageleft
:addClass('navbox-image')
:addClass('navbox-imageleft')
:wikitext(self.imageleft)
end
if self.image then
local image = inner:tag('div')
image
:addClass('navbox-image')
:wikitext(self.image)
end
for _,v in ipairs(self.rows) do
if v.list then
if v.group then
local group = inner:tag('div')
group:addClass('navbox-group')
group:wikitext(v.group)
end
local list = inner:tag('div')
list:addClass('navbox-list')
list:addClass('hlist')
list:newline()
list:wikitext(v.list)
list:newline()
end
end
if self.below then
local below = inner:tag('div')
below
:addClass('navbox-below')
:wikitext(self.below)
end
local navboxStyle = mw.getCurrentFrame():extensionTag( 'templatestyles', '', { src = 'Template:Navbox/styles.css' } );
local hlistStyle = mw.getCurrentFrame():extensionTag( 'templatestyles', '', { src = 'Template:Hlist/styles.css' } );
return navboxStyle .. hlistStyle .. tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
function p.navbox(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
local box = Navbox.new(getArgs(frame))
box:setParameters()
return box:export()
end
if mw.site.siteName:byte() == 66 then
return p
end