https://de.wikipedia.org/w/index.php?action=history&feed=atom&title=Module%3ARedirectModul:Redirect - Versionsgeschichte2025-06-08T19:14:06ZVersionsgeschichte dieser Seite in WikipediaMediaWiki 1.45.0-wmf.4https://de.wikipedia.org/w/index.php?title=Modul:Redirect&diff=177401002&oldid=prevAvicenno: AZ: Die Seite wurde neu angelegt: -- This module provides functions for getting the target of a redirect page. local p = {} -- Gets a…2018-05-13T21:10:51Z<p><a href="/wiki/Hilfe:Zusammenfassung_und_Quellen#Auto-Zusammenfassung" title="Hilfe:Zusammenfassung und Quellen">AZ</a>: Die Seite wurde neu angelegt: -- This module provides functions for getting the target of a redirect page. local p = {} -- Gets a…</p>
<p><b>Neue Seite</b></p><div>-- This module provides functions for getting the target of a redirect page.<br />
<br />
local p = {}<br />
<br />
-- Gets a mw.title object, using pcall to avoid generating script errors if we<br />
-- are over the expensive function count limit (among other possible causes).<br />
local function getTitle(...)<br />
local success, titleObj = pcall(mw.title.new, ...)<br />
if success then<br />
return titleObj<br />
else<br />
return nil<br />
end<br />
end<br />
<br />
-- Gets the name of a page that a redirect leads to, or nil if it isn't a<br />
-- redirect.<br />
function p.getTargetFromText(text)<br />
return string.match(<br />
text,<br />
"^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)%]%]"<br />
) or string.match(<br />
text,<br />
"^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]"<br />
)<br />
end<br />
<br />
-- Gets the target of a redirect. If the page specified is not a redirect,<br />
-- returns nil.<br />
function p.getTarget(page, fulltext)<br />
-- Get the title object. Both page names and title objects are allowed<br />
-- as input.<br />
local titleObj<br />
if type(page) == 'string' or type(page) == 'number' then<br />
titleObj = getTitle(page)<br />
elseif type(page) == 'table' and type(page.getContent) == 'function' then<br />
titleObj = page<br />
else<br />
error(string.format(<br />
"bad argument #1 to 'getTarget'"<br />
.. " (string, number, or title object expected, got %s)",<br />
type(page)<br />
), 2)<br />
end<br />
if not titleObj or not titleObj.isRedirect then<br />
return nil<br />
end<br />
<br />
-- Find the target by using string matching on the page content.<br />
local target = p.getTargetFromText(titleObj:getContent() or "")<br />
if target then<br />
local targetTitle = getTitle(target)<br />
if targetTitle then<br />
if fulltext then<br />
return targetTitle.fullText<br />
else<br />
return targetTitle.prefixedText<br />
end<br />
else<br />
return nil<br />
end<br />
else<br />
-- The page is a redirect, but matching failed. This indicates a bug in<br />
-- the redirect matching pattern, so throw an error.<br />
error(string.format(<br />
'could not parse redirect on page "%s"',<br />
fulltext and titleObj.fullText or titleObj.prefixedText<br />
))<br />
end<br />
end<br />
<br />
--[[<br />
-- Given a single page name determines what page it redirects to and returns the<br />
-- target page name, or the passed page name when not a redirect. The passed<br />
-- page name can be given as plain text or as a page link.<br />
-- <br />
-- Returns page name as plain text, or when the bracket parameter is given, as a<br />
-- page link. Returns an error message when page does not exist or the redirect<br />
-- target cannot be determined for some reason.<br />
--]]<br />
function p.luaMain(rname, bracket, fulltext)<br />
if type(rname) ~= "string" or not rname:find("%S") then<br />
return nil<br />
end<br />
bracket = bracket and "[[%s]]" or "%s"<br />
rname = rname:match("%[%[(.+)%]%]") or rname<br />
local target = p.getTarget(rname, fulltext)<br />
local ret = target or rname<br />
ret = getTitle(ret)<br />
if ret then<br />
if fulltext then<br />
ret = ret.fullText<br />
else<br />
ret = ret.prefixedText<br />
end<br />
return bracket:format(ret)<br />
else<br />
return nil<br />
end<br />
end<br />
<br />
-- Provides access to the luaMain function from wikitext.<br />
function p.main(frame)<br />
local args = require('Module:Arguments').getArgs(frame, {frameOnly = true})<br />
return p.luaMain(args[1], args.bracket, args.fulltext) or ''<br />
end<br />
<br />
-- Returns true if the specified page is a redirect, and false otherwise.<br />
function p.luaIsRedirect(page)<br />
local titleObj = getTitle(page)<br />
if not titleObj then<br />
return false<br />
end<br />
if titleObj.isRedirect then<br />
return true<br />
else<br />
return false<br />
end<br />
end<br />
<br />
-- Provides access to the luaIsRedirect function from wikitext, returning 'yes'<br />
-- if the specified page is a redirect, and the blank string otherwise.<br />
function p.isRedirect(frame)<br />
local args = require('Module:Arguments').getArgs(frame, {frameOnly = true})<br />
if p.luaIsRedirect(args[1]) then<br />
return 'yes'<br />
else<br />
return ''<br />
end<br />
end<br />
<br />
return p</div>Avicenno