From Wikipedia, the free encyclopedia

local c = {

	disambig_magic_word = '__DISAMBIG__',

	template_unambiguous = 'R from sort name/unambiguous',

	template_ambiguous = 'R from sort name/ambiguous',

	cat_unambiguous_from = 'Category:Redirects from sort names',

	cat_unambiguous_to = 'Category:Redirects from sort names by article title',

	cat_ambiguous_from = 'Category:Redirects from ambiguous sort names',

	cat_ambiguous_to = 'Category:Redirects from ambiguous sort names by article title',

	err_not_redirect = '[[Template:R from sort name]] error: page is not a redirect',

}



local remove_accents = require('Module:Latin')._removeaccents



local category = function(category, chr)

	return '[[' .. category .. ', ' .. remove_accents(chr) .. ']]'

end



local p = {}



p.core = function(title, frame)

	if title.exists then

		if title.isRedirect then

			char_from = mw.ustring.sub(title.fullText, 1, 1)

			char_to = mw.ustring.sub(title.redirectTarget.fullText, 1, 1)

			if mw.ustring.find(

				frame:preprocess(

					title.redirectTarget:getContent()

				),

				c.disambig_magic_word,

				1,

				true

			) then

				return (

					frame:expandTemplate{title = c.template_ambiguous} ..

					category(c.cat_ambiguous_from, char_from) ..

					category(c.cat_ambiguous_to, char_to)

				)

			else

				return (

					frame:expandTemplate{title = c.template_umambiguous} ..

					category(c.cat_unambiguous_from, char_from) ..

					category(c.cat_unambiguous_to, char_to)

				)

			end

		else

			return error(c.err_not_redirect)

		end

	else

		return frame:expandTemplate{

			title = c.template_unambiguous

		}

	end

end



p.main = function(frame)

	return p.core(mw.title.getCurrentTitle(), frame)

end



return p