Module:Correct title categories

    From Nonbinary Wiki

    Module used to populate categories for {{Correct title}}

    Wikipedia logo This module uses material from the Wikipedia module Module:Correct title categories/doc, which is released under the Creative Commons Attribution-ShareAlike 3.0 Unported License (view authors).
    Wikipedia logo This module uses material from the Wikipedia module Module:Correct title categories, which is released under the Creative Commons Attribution-ShareAlike 3.0 Unported License (view authors).

    local p = {}
    function p.main(frame)
    	return p._main(frame.args[1])
    end
    function p._main(title)
    	title = mw.text.unstripNoWiki(title)
    	-- Decode HTML entities unless the title itself is demonstrating one
    	if title:sub(1, 1) ~= "&" then
    		title = mw.text.decode(title)
    	end
    	title = title:gsub("'","")
    	-- Add a trailing "a" to distinguish empty from no fragment
    	local titleObj = mw.title.new(title.."a")
    	if not titleObj or title == "/." then
    		if title:find("%[") or title:find("%]") or title:find("<") or title:find(">") or title:find("{") or title:find("}") then
    			return "[[Category:Restricted titles (brackets)]]"
    		elseif title:find("|") then
    			return "[[Category:Restricted titles (vertical bar)]]"
    		else
    			return "[[Category:Restricted titles (other)]]"
    		end
    	elseif #titleObj.fragment > 0 then
    		if #titleObj.text > 0 then
    			return "[[Category:Restricted titles (non-leading number sign)]]"
    		else
    			return "[[Category:Restricted titles (leading number sign)]]"
    		end
    	elseif #titleObj.interwiki > 0 then
    		return "[[Category:Restricted titles (interwiki prefix)]]"
    	elseif not titleObj.isContentPage then
    		return "[[Category:Restricted titles (namespace)]]"
    	else
    		return "[[Category:Pages using technically valid titles in correct title hatnotes]]"
    	end
    end
    return p