Modul:Toolbar: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
nieuw |
Hidayatsrf (bicara | kontrib) k Melindungi "Modul:Toolbar": Modul Lua berisiko tinggi ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya)) |
||
(2 revisi perantara oleh 2 pengguna tidak ditampilkan) | |||
Baris 1: | Baris 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] = mw.ustring.gsub(args[v], "%[%[::+(.-)%]%]", "[[:%1]]") |
|||
tinsert(ret, 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 |
||
return p |
return p |
Revisi terkini sejak 1 Maret 2021 02.57
Modul ini dilindungi. Modul ini sangat mencolok yang digunakan oleh banyak halaman, atau sangat sering disubstitusikan. Karena vandalisme atau kesalahan akan mempengaruhi banyak halaman, dan suntingan kecil dapat memberi beban besar pada server, modul ini dilindungi dari penyuntingan. |
-- 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] = mw.ustring.gsub(args[v], "%[%[::+(.-)%]%]", "[[:%1]]")
end
if #ret > 0 then
return table.concat(ret, sep)
else
return nil
end
end
return p