Module:Redirect

This module accepts the name of a single page. It determines if the page is a redirect; if so it looks up the page, extracts the target, and returns the target name as text. Its usage is. The template neither takes nor gives square brackets, so to show the result as a link use . An error is produced if the redirect does not exist, but for versatility no error is given if the file is not a redirect (returns the original text) or if the file name is blank (returns blank).

p={}

function p.main(frame) args=frame.args parent=frame.getParent(frame) if parent then pargs = parent.args else pargs={} end local rname=args[1] or pargs[1] or "" local bracket=args.bracket or pargs.bracket local bb = "";local be= "" -- store brackets if restoring to an output if bracket option is set if rname then if mw.ustring.gsub(rname,"%s","") == "" then return "" end if bracket then local strip=mw.ustring.match(rname,"%[%[(.+)%]%]") if strip then rname=strip;bb="";be="" end end else return "" end local rpage=mw.title.new(rname) local err="" if rpage then -- avoid possibly expensive FileExists if we don't have anything if rpage.id ~= 0 then -- if rpage.fileExists then if rpage.isRedirect then return (bb.. tostring(mw.ustring.match(tostring(rpage.getContent(rpage)),"[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt].-%[%[(.-)%]%]")..be) or [=[ Module:redirect error: failed to understand - ]=] .. rname .. [=[</span]=]) else return rname -- not a redirect so leave the original text (for some general-purpose template use) end --  else err="File does not exist: " --  end else err="File not found (id=0): " end else err="File not found (mw.title.new failed)" end return [=[ Module:redirect error: ]=] .. err .. [=[ - ]=] .. rname .. [=[ ]=] end

return p