Module:R from sort name

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