ماڊيول:Redirect
| هي Lua ماڊيول گھڻن صفحن تي استعمال ٿئي ٿو، تنهن ڪري ان ۾ تبديليون وڏي پيماني تي نظر اينديون۔ مهرباني ڪري ڪنهن به تبديلي کي ماڊيول جي /sandbox يا /testcases ذيلي صفحن۔ ۾ آزمائي ڏسومهرباني ڪري تبديليءَ بابت بحث ڳالهه ٻولهه واري صفحي تي ڪريو، پوءِ انهن کي لاڳو ڪريو۔ |
| 500 "مهانگيون پارسر فنڪشن ڪالون" (مثال طور #ifexist:، PAGESIZE:، ۽ PAGESINCATEGORY:) جي سرور حد سبب، هي سانچو رڳو تڏهن صحيح نموني ڪم ڪندو جڏهن اهو استعمال ڪندڙ صفحو اڳ ۾ ئي اها حد نه اورانگهيو هجي۔ جڏهن اها حد اورانگهي ويندي، تڏهن هن سانچي يا ماڊيول کي استعمال ڪندڙ صفحو زمرو:تمام گهڻين مهانگين پارسر فنڪشن ڪالن وارا صفحا ۾ شامل ڪيو ويندو۔ (وڌيڪ ڄاڻ) |
| هي سانچو ۾ آهي ۽ وسيع استعمال لاءِ تيار آهي۔ |
| هي سانچو لوا استعمال ڪري ٿو: |
هي ماڊيول ريڊائريڪٽ صفحي جي حدف کي ڳولڻ لاءِ فنڪشنون رکي ٿو۔
مکيه
[سنواريو]مکيه فنڪشن هڪ واحد صفحي جو نالو قبول ڪري ٿو۔ اهو طئي ڪري ٿو ته صفحو ريڊائريڪٽ آهي يا نه؛ جيڪڏهن هجي ته اهو صفحو ڳولي ٿو، حدف ڪڍي ٿو، ۽ حدف جو نالو متن طور موٽائي ٿو۔ ان جو استعمال هي آهي: {{#invoke:redirect|main|page-name}}۔ جيڪڏهن page-name موجود نه هجي يا ريڊائريڪٽ نه هجي ته page-name ئي موٽايو ويندو۔ جيڪڏهن page-name خالي هجي ته خالي ئي موٽايو ويندو۔
هي فنڪشن عام طور نه چورس قوسون وٺي ٿو ۽ نه ڏئي ٿو، تنهن ڪري نتيجي کي ڳنڍڻي طور ڏيکارڻ لاءِ [[{{#invoke:redirect|main|page-name}}]] استعمال ڪريو۔
جيڪڏهن پيرا ميٽر bracket کي ڪا غيرخالي قيمت ڏني وڃي ته، جيڪڏهن قوسون موجود هونديون ته اهي به گڏ اڳتي منتقل ڪيون وينديون۔
مثال
[سنواريو]{{#invoke:redirect|main|WP:AFC}}→ وڪيپيڊيا:AFC{{#invoke:redirect|main|[[WP:AFD]]|bracket=yes}}→ وڪيپيڊيا:AFD{{#invoke:redirect|main|Wikipedia:Articles for deletion}}→ وڪيپيڊيا:Articles for deletion{{#invoke:redirect|main|Red link example}}→ Red link example
نوٽ: WP:AFC ۽ WP:AFD ٻئي ريڊائريڪٽ آهن، پر Wikipedia:Articles for deletion ريڊائريڪٽ ناهي، ۽ Red link example موجود ئي ناهي۔ ان کان سواءِ، Wikipedia:Red link تي ڳاڙهين ڳنڍڻين جي نمائش لاءِ، آخري صفحو غير-منتظمين طرفان ٺاهڻ کان مستقل طور محفوظ ڪيل آهي۔
LuaMain
[سنواريو]جيڪڏهن توهان مکيه فنڪشن کي ڪنهن ٻئي لوا ماڊيول مان استعمال ڪرڻ چاهيو ٿا، ته توهان luaMain فنڪشن استعمال ڪرڻ چاهيندا۔ اهو مکيه فنڪشن جهڙي ئي سهولت ڏئي ٿو، پر ان لاءِ frame object موجود هجڻ ضروري ناهي۔
هن کي استعمال ڪرڻ لاءِ، پهرين ماڊيول لوڊ ڪريو۔
local mRedirect = require('Module:Redirect')
پوءِ هيٺين نحو سان فنڪشن استعمال ڪريو:
mRedirect.luaMain(rname, bracket)
rname ريڊائريڪٽ صفحي جو نالو آهي، ۽ جيڪڏهن bracket false يا nil کان سواءِ ڪجهه به هجي، ته ماڊيول رڳو صفحي جي نالي بدران هڪ ڳنڍڻو پيدا ڪندو۔
IsRedirect
[سنواريو]isRedirect فنڪشن وڪي صفحن مان اهو معلوم ڪرڻ لاءِ استعمال ٿيندو آهي ته ڏنل صفحو ريڊائريڪٽ آهي يا نه۔ جيڪڏهن صفحو ريڊائريڪٽ هجي، ته فنڪشن "yes" موٽائيندو، ۽ جيڪڏهن نه هجي ته نتيجو خالي هوندو۔ ان جو استعمال هي آهي: {{#invoke:redirect|isRedirect|page-name}}۔
مثال
[سنواريو]{{#invoke:redirect|isRedirect|WP:AFC}}→{{#invoke:redirect|isRedirect|Wikipedia:Articles for deletion}}→{{#invoke:redirect|isRedirect|Wikipedia:Articles for rumination}}→
LuaIsRedirect
[سنواريو]isRedirect تائين ٻين لوا ماڊيولن مان ساڳئي نموني پهچي سگهجي ٿو جيئن مکيه فنڪشن تائين:
local mRedirect = require('Module:Redirect')
mRedirect.luaIsRedirect(rname)
GetTarget
[سنواريو]getTarget فنڪشن ريڊائريڪٽ صفحي جي حدف صفحي جو نالو حاصل ڪري ٿو، ۽ اهو فقط لوا مان استعمال لائق آهي۔ جيڪڏهن ڄاڻايل صفحو ريڊائريڪٽ هجي، ته حدف موٽايو ويندو؛ ٻي صورت ۾ فنڪشن nil موٽائيندو۔
ان کي استعمال ڪرڻ لاءِ، پهرين ماڊيول لوڊ ڪريو۔
local mRedirect = require('Module:Redirect')
پوءِ هيٺين نحو سان فنڪشن استعمال ڪريو:
mRedirect.getTarget(page)
page يا ته ريڊائريڪٽ صفحي جو نالو string طور ٿي سگهي ٿو، يا mw.title object ٿي سگهي ٿو۔
پڻ ڏسو
[سنواريو]- phab:T68974 - ريڊائريڪٽ صفحي جي حدف حاصل ڪرڻ لاءِ هڪ معياري طريقو مهيا ڪريو
- mw:Extension:Scribunto/Lua reference manual#Title objects، ريڊائريڪٽ حيثيت طئي ڪرڻ لاءِ اسڪرِبونٽو انٽرفيس
- Template:Get QID، جيڪو هن ماڊيول کي استعمال ڪري ٿو
- Template:Submit an edit request، جيڪو هن ماڊيول کي استعمال ڪري ٿو
-- هي ماڊيول ريڊائريڪٽ صفحي جو حدف حاصل ڪرڻ لاءِ فنڪشن فراهم ڪري ٿو.
local p = {}
-- mw.title آبجيڪٽ حاصل ڪري ٿو؛ pcall استعمال ڪيو ويو آهي ته جيئن اسڪرپٽ جون
-- غلطيون پيدا نه ٿين، جيڪڏهن اسان expensive function count جي حد کان وڌي وڃون
-- يا ڪو ٻيو ممڪن سبب ٿئي.
local function getTitle(...)
local success, titleObj = pcall(mw.title.new, ...)
if success then
return titleObj
else
return nil
end
end
-- ان صفحي جو نالو حاصل ڪري ٿو جنهن ڏانهن ريڊائريڪٽ وڃي ٿو،
-- يا nil واپس ڪري ٿو جيڪڏهن اهو ريڊائريڪٽ نه هجي.
function p.getTargetFromText(text)
local target = string.match(
text,
"^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)%]%]"
) or string.match(
text,
"^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]"
)
return target and mw.uri.decode(target, 'PATH')
end
-- ريڊائريڪٽ جو حدف حاصل ڪري ٿو. جيڪڏهن ڏنل صفحو ريڊائريڪٽ نه هجي،
-- ته nil واپس ڪري ٿو.
function p.getTarget(page, fulltext)
-- title object حاصل ڪريو. صفحن جا نالا ۽ title objects ٻنهي کي
-- input طور قبول ڪيو وڃي ٿو.
local titleObj
if type(page) == 'string' or type(page) == 'number' then
titleObj = getTitle(page)
elseif type(page) == 'table' and type(page.getContent) == 'function' then
titleObj = page
else
error(string.format(
"bad argument #1 to 'getTarget'"
.. " (string, number, or title object expected, got %s)",
type(page)
), 2)
end
if not titleObj then
return nil
end
local targetTitle = titleObj.redirectTarget
if targetTitle then
if fulltext then
return targetTitle.fullText
else
return targetTitle.prefixedText
end
else
return nil
end
end
--[[
-- هڪ واحد صفحي جو نالو وٺي اهو طئي ڪري ٿو ته اهو ڪهڙي صفحي ڏانهن ريڊائريڪٽ ٿئي ٿو،
-- ۽ حدف صفحي جو نالو واپس ڪري ٿو، يا جيڪڏهن ريڊائريڪٽ نه هجي ته ڏنل صفحي جو نالو
-- واپس ڪري ٿو. ڏنل صفحي جو نالو سادي متن طور يا صفحي جي لنڪ طور ڏئي سگهجي ٿو.
--
-- صفحي جو نالو سادي متن طور واپس ڪري ٿو، يا bracket پيراميٽر ڏنل هجي ته
-- صفحي جي لنڪ طور واپس ڪري ٿو. جيڪڏهن صفحو موجود نه هجي يا ريڊائريڪٽ حدف
-- ڪنهن سبب معلوم نه ٿي سگهي، ته غلطي جو پيغام واپس ڪري ٿو.
--]]
function p.luaMain(rname, bracket, fulltext)
if type(rname) ~= "string" or not rname:find("%S") then
return nil
end
bracket = bracket and "[[%s]]" or "%s"
rname = rname:match("%[%[(.+)%]%]") or rname
local target = p.getTarget(rname, fulltext)
local ret = target or rname
ret = getTitle(ret)
if ret then
if fulltext then
ret = ret.fullText
else
ret = ret.prefixedText
end
return bracket:format(ret)
else
return nil
end
end
-- وڪي ٽيڪسٽ مان luaMain فنڪشن تائين رسائي فراهم ڪري ٿو.
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {frameOnly = true})
return p.luaMain(args[1], args.bracket, args.fulltext) or ''
end
-- جيڪڏهن ڏنل صفحو ريڊائريڪٽ هجي ته true واپس ڪري ٿو، ٻي صورت ۾ false.
function p.luaIsRedirect(page)
local titleObj = getTitle(page)
if not titleObj then
return false
end
if titleObj.isRedirect then
return true
else
return false
end
end
-- وڪي ٽيڪسٽ مان luaIsRedirect فنڪشن تائين رسائي فراهم ڪري ٿو؛
-- جيڪڏهن ڏنل صفحو ريڊائريڪٽ هجي ته 'yes' واپس ڪري ٿو،
-- ٻي صورت ۾ خالي اسٽرنگ واپس ڪري ٿو.
function p.isRedirect(frame)
local args = require('Module:Arguments').getArgs(frame, {frameOnly = true})
if p.luaIsRedirect(args[1]) then
return 'yes'
else
return ''
end
end
return p