Модуль:NameFirst
Материал из вики «Вече»
Дополнительные действия
Для документации этого модуля может быть создана страница Модуль:NameFirst/doc
require( 'strict' )
--
-- Реализация [[Шаблон:Сначала имя]]
--
local p = {}
local currentTitle = mw.title.getCurrentTitle().fullText
local function isEmpty( str )
return str == nil or str == ''
end
-- Требуется ли пробел после последнего символа в имени
local function needsSpace( name )
local rlen = mw.ustring.len( name )
local char = mw.ustring.sub( name, rlen, rlen )
return char ~= "’" and char ~= "'"
end
function p._main( title )
if isEmpty( title ) then
title = currentTitle
end
-- Из [[Шаблон:Без уточнения]]
title = mw.ustring.gsub( title, '^%s*(.+)%s+%b()%s*$', '%1', 1 )
local parts = mw.text.split( title, ',', true )
if #parts < 2 then
return parts[ 1 ]
end
-- Перестановка первых двух параметров до запятой местами
local result = mw.text.trim( parts[ 2 ] )
if needsSpace( result ) then
result = result .. ' '
end
result = result .. parts[ 1 ]
-- Возврат значений после 1-й запятой в изначальном виде (Джордж Харрис, 1-й барон Харрис, да святится имя его)
for i, val in pairs( parts ) do
if i ~= 1 and i ~= 2 then
result = result .. ', ' .. mw.text.trim( val )
end
end
return result
end
function p.main( frame )
local args = require( 'Module:Arguments' ).getArgs( frame )
return p._main( args[ 1 ] )
end
return p