Module:Toolbar: Difference between revisions
Appearance
Content deleted Content added
allow access to the p._main function from other modules, return the blank string if no arguments were specified, and switch indentation to tabs |
reorder the functions, and add an option to remove the enclosing span tags |
||
Line 1: | Line 1: | ||
-- This module implements {{toolbar}}. |
|||
local mArguments -- Lazily initialise [[Module:Arguments]] |
|||
local mTableTools = require('Module:TableTools') |
|||
local yesno = require('Module:Yesno') |
|||
local p = {} |
local p = {} |
||
function p.main(frame) |
|||
mArguments = require('Module:Arguments') |
|||
-- Get the keys of the numerical arguments that are present. |
|||
local |
local args = mArguments.getArgs(frame) |
||
⚫ | |||
local tinsert = table.insert |
|||
⚫ | |||
for k, v in pairs(args) do |
|||
if type(k) == 'number' then |
|||
⚫ | |||
tinsert(nums, k) |
|||
⚫ | |||
end |
|||
⚫ | |||
⚫ | |||
-- returning empty brackets. |
|||
⚫ | |||
elseif yesno(args.span) == false then |
|||
⚫ | |||
'(%s)', |
|||
toolbarItems |
|||
) |
|||
else |
|||
return string.format( |
|||
⚫ | |||
⚫ | |||
⚫ | |||
toolbarItems |
|||
) |
|||
end |
end |
||
table.sort(nums) |
|||
⚫ | |||
end |
end |
||
function p.makeToolbarItems(args) |
|||
local nums = |
local nums = mTableTools.numKeys(args) |
||
local sep = (args.separator or 'pipe') .. '-separator' |
local sep = (args.separator or 'pipe') .. '-separator' |
||
sep = mw.message.new(sep):plain() |
sep = mw.message.new(sep):plain() |
||
local ret = {} |
local ret = {} |
||
local tinsert = table.insert |
|||
for i, v in ipairs(nums) do |
for i, v in ipairs(nums) do |
||
ret[#ret + 1] = args[v] |
|||
end |
end |
||
if #ret > 0 then |
if #ret > 0 then |
||
return table.concat(ret, sep) |
return table.concat(ret, sep) |
||
end |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
) |
|||
end |
|||
function p.main(frame) |
|||
-- If called via #invoke, use the args passed into the invoking template. |
|||
-- Otherwise, for testing purposes, assume args are being passed directly in. |
|||
local origArgs |
|||
if frame == mw.getCurrentFrame() then |
|||
origArgs = frame:getParent().args |
|||
for k, v in pairs(frame.args) do |
|||
origArgs = frame.args |
|||
break |
|||
end |
|||
else |
else |
||
return nil |
|||
origArgs = frame |
|||
end |
end |
||
-- Strip whitespace and remove nil values |
|||
local args = {} |
|||
for k, v in pairs(origArgs) do |
|||
if type(v) == 'string' then |
|||
v = mw.text.trim(v) |
|||
end |
|||
if v ~= '' then |
|||
args[k] = v |
|||
end |
|||
end |
|||
⚫ | |||
end |
end |
||
Revision as of 08:26, 5 April 2014
![]() | This Lua module is used in system messages, and on approximately 1,410,000 pages, or roughly 2% of all pages. Changes to it can cause immediate changes to the Wikipedia user interface. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Please discuss changes on the talk page before implementing them. |
![]() | This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
![]() | This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
![]() | This module depends on the following other modules: |
This module implements {{toolbar}}. Please see the template page for documentation.
See also
- {{toolbar}}, {{toolbar/sandbox}}, /testcases
-- This module implements {{toolbar}}.
local mArguments -- Lazily initialise [[Module:Arguments]]
local mTableTools = require('Module:TableTools')
local yesno = require('Module:Yesno')
local p = {}
function p.main(frame)
mArguments = require('Module:Arguments')
local args = mArguments.getArgs(frame)
return p._main(args)
end
function p._main(args)
local toolbarItems = p.makeToolbarItems(args)
if not toolbarItems then
-- Return the blank string if no arguments were specified, rather than
-- returning empty brackets.
return ''
elseif yesno(args.span) == false then
return string.format(
'(%s)',
toolbarItems
)
else
return string.format(
'<span class="plainlinks%s"%s>(%s)</span>',
type(args.class) == 'string' and ' ' .. args.class or '',
type(args.style) == 'string' and string.format(' style="%s"', args.style) or '',
toolbarItems
)
end
end
function p.makeToolbarItems(args)
local nums = mTableTools.numKeys(args)
local sep = (args.separator or 'pipe') .. '-separator'
sep = mw.message.new(sep):plain()
local ret = {}
for i, v in ipairs(nums) do
ret[#ret + 1] = args[v]
end
if #ret > 0 then
return table.concat(ret, sep)
else
return nil
end
end
return p