Module:Redirect: Difference between revisions

From escforumwiki
Jump to navigation Jump to search
en>Wnt
m Another unlikely test
en>Wnt
I'm mystified. Right name, same call as I've used before (double checked), so why isn't there a page? Maybe try the template
Line 11: Line 11:
   local rpage=mw.title.new(rname)
   local rpage=mw.title.new(rname)
   local err=""
   local err=""
--  if rpage then -- avoid possibly expensive FileExists if we don't have anything
  if rpage then -- avoid possibly expensive FileExists if we don't have anything
       if rpage.id ~= 0 then
       if rpage.id ~= 0 then
         if rpage.fileExists then
         if rpage.fileExists then
Line 22: Line 22:
       else err="File not found (id=0): "
       else err="File not found (id=0): "
       end
       end
--  else err="File not found (mw.title.new failed)"
  else err="File not found (mw.title.new failed)"
--  end
  end
   return [=[<span style="text-color:red;">[[Module:redirect]] error: ]=] .. err .. [=[ - [[]=] .. rname .. [=[]]</span>]=]
   return [=[<span style="text-color:red;">[[Module:redirect]] error: ]=] .. err .. [=[ - [[]=] .. rname .. [=[]]</span>]=]
end
end


return p
return p

Revision as of 15:12, 18 March 2013

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(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 (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