Modul:Officeholder party tracking

local p = {}

function p.tracking(frame)
	tcat = 'Category:Pages using infobox officeholder with an atypical party value'
    function isblank( val ) 
        return (val == nil) or val:match('^[%s]*$')
    end
	local function iswikilink(s)
		return s and s ~= ''
	end
	
	local pname = frame.args.party or ''
	if isblank(pname) then
		return ''
	end
	pname = mw.text.unstrip(pname)
	if pname:match('^%s*%[%[([^%[%]]*)%]%]%s*$') then
		return ''
	end
	tkey = pname:match('^%s*(.-)%s*$')
	tkey = mw.ustring.gsub(tkey, '[%[%]|]', '')
	tkey = mw.ustring.gsub(tkey, '[^%w\-_ ]', '?')
	return '[[' .. tcat .. '|' .. tkey .. ' ]]'
end

return p