Module:Redirect

From escforumwiki
Revision as of 15:16, 18 March 2013 by en>Wnt
Jump to navigation Jump to search

This module contains functions to find the target of a redirect page.

Main

The main function 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 {{#invoke:redirect|main|redirect-page-name}}.

The template normally neither takes nor gives square brackets, so to show the result as a link use [[{{#invoke:redirect|main|redirect-page-name}}]]. 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).

However, if the parameter bracket is given a nonblank value, brackets will be passed on if present.

Examples

Note: WP:AFC and WP:AFD are both redirects, but Wikipedia:Articles for deletion is not.

LuaMain

If you want to use the main function from another Lua module, you may want to use the luaMain function. This provides the same functionality as the main function, but doesn't require that a frame object be available.

To use this, first load the module.

local mRedirect = require('Module:Redirect')

Then use the function with the following syntax:

mRedirect.luaMain(rname, bracket)

rname is the name of the redirect page, and if bracket is anything but false or nil, the module will produce a link rather than just a page name.

IsRedirect

The isRedirect function is used from wiki pages to find out if a given page is a redirect or not. If the page is a redirect, the function returns "yes", and if not the output is blank. Its usage is {{#invoke:redirect|isRedirect|redirect-page-name}}.

Examples

  • {{#invoke:redirect|isRedirect|WP:AFC}}Script error: The function "isRedirect" does not exist.
  • {{#invoke:redirect|isRedirect|Wikipedia:Articles for deletion}}Script error: The function "isRedirect" does not exist.

LuaIsRedirect

The isRedirect can be accessed from other Lua modules in the same way as the main function:

local mRedirect = require('Module:Redirect')
mRedirect.luaIsRedirect(rname)

GetTarget

The getTarget function fetches the target page name of a redirect page, and is only usable from Lua. If the page specified is a redirect, then the target is returned; otherwise the function returns nil.

To use it, first load the module.

local mRedirect = require('Module:Redirect')

Then use the function with the following syntax:

mRedirect.getTarget(page)

page can be either the name of the redirect page as a string, or a mw.title object.

See also


 ---- 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 {{#invoke:redirect|main|redirect-page-name}}.  The template neither takes nor gives square brackets, so to show the result as a link use [[{{#invoke:redirect|main|redirect-page-name}}]].  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 ""
   if redirect=="" then return "" end
   local rpage=mw.title.new("Module talk:ImportProtein/DefaultColors")
   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 (mw.ustring.find(rpage.getContent,"REDIRECT(.-)%[%[(.-)%]%]") or [=[<span style="text-color:red;">[[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 [=[<span style="text-color:red;">[[Module:redirect]] error: ]=] .. err .. [=[ - [[]=] .. rname .. [=[]]</span>]=]
end

return p