Модуль:Праверка перасылак для імя

З Вікіпедыі, свабоднай энцыклапедыі

local nameSurnameCat = '[[Катэгорыя:Вікіпедыя:Артыкулы пра асоб, для якіх не існуюць старонкі віду «Імя Прозвішча»]]';
local nbSurnameCat = '[[Катэгорыя:Вікіпедыя:Артыкулы пра асоб, для якіх не існуюць старонкі віду «І. Іпб. Прозвішча»]]';
local nSurnameCat = '[[Катэгорыя:Вікіпедыя:Артыкулы пра асоб, для якіх не існуюць старонкі віду «І. Прозвішча»]]';

local nameLinks = {}

function nameLinks.getAbbr( name )
    if (mw.ustring.len(name) > 2) then
		if (mw.ustring.sub( name, 1, 2) == 'Дз' ) then
            return 'Дз.'
        end    
        return mw.ustring.sub( name, 1, 1) .. '.'
    end
	if (mw.ustring.len(name) > 1) then
      return mw.ustring.sub( name, 1, 1) .. '.'
   end
   return name
end

function nameLinks.getNames( fullname )
    return mw.text.split(mw.text.split(fullname, ' %(')[1], ' ')
end

function nameLinks.formRefs( names )
	if (#names ~= 3) then
	  return {}
	end  
    local secondWordFinish = mw.ustring.sub( names[2], mw.ustring.len(names[2]) - 1, mw.ustring.len(names[2]))
    if (#names == 3 and secondWordFinish ~= 'іч' and secondWordFinish ~= 'на') then
	  return {}
	end  
	local nameSurname = names[1] .. ' ' .. names[3] 
	local nbSurname = nameLinks.getAbbr(names[1]) .. ' ' .. nameLinks.getAbbr(names[2]) .. ' ' .. names[3]
	local nSurname = nameLinks.getAbbr(names[1]) .. ' ' .. names[3] 
    return { { nameSurname, nameSurnameCat}, {nbSurname, nbSurnameCat}, {nSurname, nSurnameCat}} 
end

function nameLinks.getCats( links )
	local result = '' 
    for i = 1, #links, 1 do
	    local link = links[i][1];
	    local title = mw.title.new( link );
	    if title and not title.exists then
	        result = result .. links[i][2];
	    end
	end	
    return result
end

function nameLinks.Process( fullname )
    return nameLinks.getCats(nameLinks.formRefs(nameLinks.getNames(fullname.args[1])))
end

function nameLinks.ProcessSeveralNames( namesRow )
	local fullnames = mw.text.split(namesRow.args[1], ',')
	local result = ''
    for i = 1, #fullnames, 1 do
	    result = result .. nameLinks.getCats(nameLinks.formRefs(nameLinks.getNames(mw.text.trim(fullnames[i]))))
	    --nameLinks.getCats(nameLinks.formRefs(nameLinks.getNames(fullnames[i])))
    end	
    return result
end

return nameLinks