Module:Redirect: Difference between revisions
Content added Content deleted
Enwikipedia>Jackmcbarn (handle redirects that pipe their link) |
(Copying change per request of AlexTheWhovian. Please revert me if this causes some sort of error) |
||
Line 28: | Line 28: | ||
-- Gets the target of a redirect. If the page specified is not a redirect, |
-- Gets the target of a redirect. If the page specified is not a redirect, |
||
-- returns nil. |
-- returns nil. |
||
function p.getTarget(page) |
function p.getTarget(page, fulltext) |
||
-- Get the title object. Both page names and title objects are allowed |
-- Get the title object. Both page names and title objects are allowed |
||
-- as input. |
-- as input. |
||
Line 52: | Line 52: | ||
local targetTitle = getTitle(target) |
local targetTitle = getTitle(target) |
||
if targetTitle then |
if targetTitle then |
||
if fulltext then |
|||
⚫ | |||
return targetTitle.fullText |
|||
else |
|||
⚫ | |||
end |
|||
else |
else |
||
return nil |
return nil |
||
Line 61: | Line 65: | ||
error(string.format( |
error(string.format( |
||
'could not parse redirect on page "%s"', |
'could not parse redirect on page "%s"', |
||
titleObj.prefixedText |
fulltext and titleObj.fullText or titleObj.prefixedText |
||
)) |
)) |
||
end |
end |
||
Line 75: | Line 79: | ||
-- target cannot be determined for some reason. |
-- target cannot be determined for some reason. |
||
--]] |
--]] |
||
function p.luaMain(rname, bracket) |
function p.luaMain(rname, bracket, fulltext) |
||
if type(rname) ~= "string" or not rname:find("%S") then |
if type(rname) ~= "string" or not rname:find("%S") then |
||
return nil |
return nil |
||
Line 81: | Line 85: | ||
bracket = bracket and "[[%s]]" or "%s" |
bracket = bracket and "[[%s]]" or "%s" |
||
rname = rname:match("%[%[(.+)%]%]") or rname |
rname = rname:match("%[%[(.+)%]%]") or rname |
||
local target = p.getTarget(rname) |
local target = p.getTarget(rname, fulltext) |
||
local ret = target or rname |
local ret = target or rname |
||
ret = getTitle(ret) |
ret = getTitle(ret) |
||
if ret then |
if ret then |
||
if fulltext then |
|||
⚫ | |||
ret = ret.fullText |
|||
else |
|||
⚫ | |||
end |
|||
return bracket:format(ret) |
return bracket:format(ret) |
||
else |
else |
||
Line 95: | Line 103: | ||
function p.main(frame) |
function p.main(frame) |
||
local args = require('Module:Arguments').getArgs(frame, {frameOnly = true}) |
local args = require('Module:Arguments').getArgs(frame, {frameOnly = true}) |
||
return p.luaMain(args[1], args.bracket) or '' |
return p.luaMain(args[1], args.bracket, args.fulltext) or '' |
||
end |
end |
||