モジュール:Toolbar
提供: ひつじ小屋別館2代目
2013年6月12日 (水) 22:46時点におけるMr. Stradivarius (トーク)による版 (generate more natural html if class and style arguments are absent)
This template is used on 570,000 pages. To avoid large-scale disruption and unnecessary server load, any changes to this template should first be tested in its /sandbox or /testcases subpages, or in your own user space. The tested changes can then be added to this page in one single edit. Please consider discussing any changes on the talk page before implementing them. |
This module is subject to page protection. It is a highly visible module in use by a very large number of articles, 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 is protected from editing. |
This module implements {{toolbar}}. Please see the template page for documentation.
local p = {}
local args = {}
-- Get the keys of the numerical arguments that are present.
local function getArgNums()
local nums = {}
for k, v in pairs(args) do
if type(k) == 'number' then
table.insert(nums, k)
end
end
table.sort(nums)
return nums
end
local function makeToolbarItems()
-- Get numerical argument keys.
local nums = getArgNums()
-- Get the separator text.
local sep = (args.separator or 'pipe') .. '-separator'
sep = mw.message.new(sep):plain()
-- Generate the toolbar items.
local ret = ''
for i, v in ipairs(nums) do
ret = ret .. args[v]
if nums[i + 1] then
ret = ret .. sep
end
end
return ret
end
local function makeToolbar()
local class = (args.class and (' ' .. args.class)) or ''
local style = (args.style and (' style="' .. args.style .. '"')) or ''
local ret = '<span class="plainlinks' .. class .. '"' .. style .. '>'
.. '(' .. makeToolbarItems() .. ')'
.. '</span>'
return ret
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
else
origArgs = frame
end
-- Strip whitespace and remove nil values
for k, v in pairs(origArgs) do
v = mw.text.trim(v)
if v ~= '' then
args[k] = v
end
end
return makeToolbar()
end
return p