Module:Border
Appearance
![]() | This module depends on the following other modules: |
![]() | This module uses TemplateStyles: |
Implements {{border}}.
Tracking categories
[edit]- Category:Borders using style parameters (11)
- Category:Pages using pixel widths (border) (6,723)
- Category:Borders using maxwidth parameter (7,717)
- Category:Borders using bstyle parameter (451)
- Category:Borders using bthickness parameter (1,714)
- Category:Borders using color parameter (601)
- Category:Borders using bgcolor parameter (298)
- Category:Borders using radius parameter (246)
- Category:Borders using align parameter (659)
- Category:Borders using padding parameter (1,724)
- Category:Borders using style parameter (6,325)
- Category:Borders with numerical arguments (4)
require('strict')
local p = {} --p stands for package
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local make_style_string = require('Module:Optional style').make_style_string
local CSS_unit = require('Module:CSS unit')._CSS_unit
local function _border(args)
local trackingCats = {}
local aliases = {
['max-width'] = 'maxwidth',
['border-radius'] = 'radius',
['border-style'] = 'bstyle',
['border-width'] = 'bthickness',
['border-color'] = 'color',
['background-color'] = 'bgcolor',
['text-align'] = 'align',
['content'] = 1,
['text'] = 1
}
for k, v in pairs(aliases) do
args[v] = args[v] or args[k]
end
if CSS_unit({args.maxwidth}) == 'px' then
table.insert(trackingCats, '[[Category:' .. 'Pages using pixel widths (border)' .. ']]')
end
if args.position ~= 'left' and args.position ~= 'right' then
args.position = 'center'
end
for k, v in pairs({'maxwidth', 'bstyle', 'bthickness', 'color', 'bgcolor', 'radius', 'align', 'padding', 'style'}) do
if args[v] then
table.insert(trackingCats, '[[Category:' .. 'Borders using ' .. v .. ' parameter' .. ']]')
end
end
for k, v in pairs(args) do
if type(k) == 'number' and k ~= 1 then
table.insert(trackingCats, '[[Category:' .. 'Borders with numerical arguments' .. ']]')
break
end
end
local styleArgs = {
['max-width'] = args.maxwidth,
['display'] = args.display,
['border-style'] = args.bstyle,
['border-width'] = args.bthickness,
['border-color'] = args.color,
['border-radius'] = args.radius,
['background-color'] = args.bgcolor,
['text-align'] = args.align,
['padding'] = args.padding
}
if styleArgs['background-color'] then
styleArgs['color'] = 'inherit'
end
local stylesheet = mw.getCurrentFrame():extensionTag('templatestyles', '', {src = 'Template:Border/styles.css'})
local border_div = mw.html.create('div')
:addClass('wst-border')
:addClass('wst-border-' .. args.position)
:addClass((yesno(args.compact) and 'wst-border-compact') or 'wst-border-fullwidth')
:addClass(args.class)
:css(styleArgs)
:cssText(args.style)
:wikitext(args[1])
:wikitext(table.concat(trackingCats))
border_div = tostring(border_div)
if yesno(args.noclose) then
border_div = string.gsub(border_div, '</div>$', '')
end
return stylesheet .. border_div
end
function p._border(args)
return _border(args)
end
function p.border(frame)
return _border(getArgs(frame, { trim = false }))
end
function p.border_start(frame)
local args = getArgs(frame, {trim = false})
args.noclose = true
return _border(args)
end
return p