ماڊيول:Redirect-multi
ڏيک
{{redirect-multi}} کي لاڳو ڪري ٿو۔
local mRedirectHatnote = require('Module:Redirect hatnote')
local mArguments = require('Module:Arguments')
local p = {}
-- fallback disambiguate (ڇو ته ڪجهه وڪين جي Module:Hatnote ۾ disambiguate موجود ناهي)
local function disambiguate(titleText)
if not titleText or titleText == '' then
return nil
end
-- جيڪڏهن اهو اڳ ئي وضاحتي صفحي وانگر لڳي، ته صرف لنڪ ڏيو
if mw.ustring.find(titleText, '%(disambiguation%)', 1, false) then
return string.format('[[%s]]', titleText)
end
-- معياري وضاحتي لنڪ ٺاهيو (انگريزي نالي وارو طريقو عام درآمد ٿيل روايت آهي)
return string.format('[[%s (disambiguation)|%s]]', titleText, titleText)
end
function p.redirectMulti(frame)
local args = mArguments.getArgs(frame)
-- maxArg هٿ سان حاصل ڪريو ڇو ته getArgs ۽ table.maxn گڏ سٺو ڪم نٿا ڪن
local maxArg = 0
for k, v in pairs(args) do
if type(k) == 'number' and k > maxArg then
maxArg = k
end
end
-- ريڊائريڪٽن جو تعداد حاصل ڪريو، پوءِ ان کي args ٽيبل مان هٽايو
local numRedirects = tonumber(args[1]) or 1
-- دليلن کي هٿ سان هيٺ منتقل ڪريو؛ table.remove استعمال نه ڪيو ويو آهي
-- ڇو ته getArgs ڪجهه پيچيده آهي
for i = 2, maxArg + 1 do
args[i - 1] = args[i]
end
-- جيڪڏهن ريڊائريڪٽن کان پوءِ ڪي به دليل موجود نه هجن، ته ڊفالٽ سيٽ شامل ڪريو
if maxArg - 2 <= numRedirects then
for i = 1, numRedirects do
args[numRedirects + (2 * i)] = args[i] and disambiguate(args[i])
-- هي آخري شيءِ کان پوءِ به "and" شامل ڪري ٿو، پر اهو نظرانداز ڪيو ويندو
args[numRedirects + (2 * i) + 1] = 'and'
end
end
local options = { selfref = args.selfref }
return mRedirectHatnote._redirect(args, numRedirects, options)
end
return p