Модуль:Comma separated entries
Дакумэнтацыя модулю[прагляд] [рэдагаваць] [гісторыя] [абнавіць]
local p = {}
local function _main( args )
local sep = mw.message.new( 'comma-separator' ):plain()
return table.concat( args, sep )
end
function p.main( frame )
local origArgs
if frame == mw.getCurrentFrame() then
-- Выклік адбываецца праз #invoke. Калі пры выкліку былі перададзеныя аргумэнты,
-- бярэм іх. Інакш выкарыстоўваем аргумэнты з шаблёну.
origArgs = frame:getParent().args
for k, v in pairs( frame.args ) do
origArgs = frame.args
break
end
else
-- Выклік адбываецца зь іншага модулю ці кансолі адладаваньня,
-- таму падразумяваем, што аргумэнты перадаюцца наўпрост.
origArgs = frame
end
-- Выкарыстоўваюцца толькі цэлалікавыя аргумэнты, таксама дазволеныя яўныя
-- пазыцыйныя аргумэнты, апісаныя не па парадку, напр. {{Сьпіс з br|3=элемэнт3}}.
-- Пасьля апрацоўкі аргумэнты могуць быць дасяжныя праз ipairs.
local args = {}
for k, v in pairs( origArgs ) do
if type( k ) == 'number'
and k >= 1
and math.floor( k ) == k
and mw.ustring.match( v, '%S' ) -- Выдаленьне пустых значэньняў і пропустаў.
then
table.insert( args, k )
end
end
table.sort( args )
for i,v in ipairs( args ) do
args[ i ] = origArgs[ v ]
-- Trim whitespace from all args.
if type( args[ i ] ) == 'string' then
args[ i ] = mw.text.trim( args[ i ] )
end
end
return _main( args )
end
return p