Module:Redirect: Difference between revisions

Copying change per request of AlexTheWhovian. Please revert me if this causes some sort of error
(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
return targetTitle.prefixedText
if fulltext then
return targetTitle.fullText
else
return targetTitle.prefixedText
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
ret = ret.prefixedText
if fulltext then
ret = ret.fullText
else
ret = ret.prefixedText
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


Anonymous user