Jump to content

Module:SortName

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Bility (talk | contribs) at 21:09, 9 April 2013 (adding first letter capitalized in nobiliary particles). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local p = {}
 
function p.sortname(k)
    --local currentpage = mw.title.getCurrentTitle()
    --local pagetitle = currentpage.text
    local pagetitle = k or 'noinputgiven'
    local text1 = ''
    local text2 = ''
    local parts = { 'de','De','von','Von','du','Du','del','Del','zu','Zu','di','Di','van','Van','na','Na' }
    local partmatch = false
    if string.find( pagetitle, ' ' ) ~= nil then
        pagetitle = string.gsub( pagetitle, '^List of ', '', 1 )
        pagetitle = mw.text.trim( string.gsub( string.gsub( pagetitle, '%b()', '' ), ' +', ' ') )
        pagetitle = string.gsub( pagetitle, ',.*$', '' )
        pagetitle = string.gsub( pagetitle, ' of .*$', '' )
        for i in ipairs( parts ) do
            if string.find( pagetitle, ' ' .. parts[i] .. ' ' ) ~= nil then
                text1 = string.sub( pagetitle, string.find( pagetitle, ' ' .. parts[i] .. ' ' ) + 1, #pagetitle )
                text2 = string.sub( pagetitle, 0, string.find( pagetitle, ' ' .. parts[i] .. ' ' ) )
                pagetitle = text1 .. ', ' .. text2
                partmatch = true
                break
            end
        end
        if not partmatch and string.find( pagetitle, ' ' ) ~= nil then
            text1 = string.sub( pagetitle, string.find( pagetitle, ' [^ ]*$' ) + 1, #pagetitle )
            text2 = string.sub( pagetitle, 0, string.find( pagetitle, ' [^ ]*$' ) )
            pagetitle = text1 .. ', ' .. text2
        end
    end
    return pagetitle
end
 
return p