Modul:Resolve category redirect

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas

local p = {}

-- Returns the target of {{Category redirect}}, if it exists, else returns the original cat.
function p.rtarget(cat)
    if (mw.ustring.match(cat, '[{}!|]') ~= nil) then
        return cat
    end
	local catcontent = mw.title.new( cat or '', 'Kategori' ):getContent()
    if string.match(catcontent or '', '{{ *[Pp]indah' or '{{ *[[Kk]at' ) then
        local getRegex = require('Modul:Template redirect regex').main
        local tregex = getRegex('Pengalihan kategori')
        for _, v in pairs(tregex) do
            local rtarget = mw.ustring.match(catcontent, v..'%s*|%s*([^|{}}]+)')
            if rtarget then
                rtarget = mw.ustring.gsub(rtarget, '^1%s*=%s*', '')
                rtarget = string.gsub(rtarget, '^[Kk]ategori:', '')
                return rtarget
            end
        end
    end
    return cat
end

function p.main(frame)
    local args = frame:getParent().args
    local cat = args[1]

    if (cat == '') or (cat == nil) then
        return ''
    end
    return p.rtarget(cat)
end

return p