Section Link

-- This module implements {{section link}}.  local checkType = require('libraryUtil').checkType  local p = {}  local function makeSectionLink(page, section, display) display = display or section page = page or '' return string.format('[[%s#%s|%s]]', page, section, display) end  local function normalizeTitle(title) title = mw.ustring.gsub(mw.ustring.gsub(title,"'",""),'"','') return mw.title.new(mw.ustring.gsub(title,"%b<>","")).prefixedText end  function p._main(page, sections, options, title) -- Validate input. checkType('_main', 1, page, 'string', true) checkType('_main', 3, options, 'table', true) if sections == nil then sections = {} elseif type(sections) == 'string' then sections = {sections} elseif type(sections) ~= 'table' then error(string.format( "type error in argument #2 to '_main' " .. "(string, table or nil expected, got %s)", type(sections) ), 2) end options = options or {} title = title or mw.title.getCurrentTitle()  -- Deal with blank page names elegantly if page and not page:find('%S') then page = nil options.nopage = true end  -- Make the link(s). local isShowingPage = not options.nopage if #sections <= 1 then local linkPage = page or '' local section = sections[1] or 'ملاحظات' local display = '§ ' .. section if isShowingPage then page = page or title.prefixedText if options.display and options.display ~= '' then if normalizeTitle(options.display) == normalizeTitle(page) then display = options.display .. ' ' .. display else error(string.format( 'Display title "%s" was ignored since it is ' .. "not equivalent to the page's actual title", options.display ), 0) end else display = page .. ' ' .. display end end return makeSectionLink(linkPage, section, display) else -- Multiple sections. First, make a list of the links to display. local ret = {} for i, section in ipairs(sections) do ret[i] = makeSectionLink(page, section) end  -- Assemble the list of links into a string with mw.text.listToText. -- We use the default separator for mw.text.listToText, but a custom -- conjunction. There is also a special case conjunction if we only -- have two links. local conjunction if #sections == 2 then conjunction = '​ and ' else conjunction = ', and ' end ret = mw.text.listToText(ret, nil, conjunction)  -- Add the intro text. local intro = '§§ ' if isShowingPage then intro = (page or title.prefixedText) .. ' ' .. intro end ret = intro .. ret  return ret end end  function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'قالب:وصلة قسم', valueFunc = function (key, value) value = value:match('^%s*(.-)%s*$') -- Trim whitespace -- Allow blank first parameters, as the wikitext template does this. if value ~= '' or key == 1 then return value end end })  -- Sort the arguments. local page local sections, options = {}, {} for k, v in pairs(args) do if k == 1 then -- Doing this in the loop because of a bug in [[Module:Arguments]] -- when using pairs with deleted arguments. page = mw.text.decode(v, decodeNamedEntities) elseif type(k) == 'number' then sections[k] = v else options[k] = v end end  -- Extract section from page, if present if page then local p, s = page:match('^(.-)#(.*)$') if p then page, sections[1] = p, s end end  -- Compress the sections array. local function compressArray(t) local nums, ret = {}, {} for num in pairs(t) do nums[#nums + 1] = num end table.sort(nums) for i, num in ipairs(nums) do ret[i] = t[num] end return ret end sections = compressArray(sections)  return p._main(page, sections, options) end  return p 

🔥 Trending searches on Wiki العربية:

القاهرةمص القضيبالحسين بن طلالسام مرسيمانشستر سيتيالعراقمحمد بن عبد الله الفيصل آل سعودوسائل تواصل اجتماعيعيد القيامةعمرو ديابالدولة العثمانيةقذف الإناثمالك بن أنسكريستيانو رونالدوجائزة نادي القرن العشرينتلوث المياهقائمة الدول حسب مؤشر القوة العسكريةسليمان القانونيهنا الزاهدفيصل بن عبد العزيز آل سعودسعود بن عبد المحسن بن عبد العزيز آل سعود365 يوم (فيلم)جوني سنسمحمد أبو العينينخالد عبد الرحمنحسام موافيطارق بن زيادأسرة سلطان بن عبد العزيز آل سعودكنداكان وأخواتهاجنوب إفريقيانادي ليفربولإكليل الجبل (نبات)قائمة نهائيات دوري أبطال أوروباإسبانياعلم فلسطينأحمد عز (ممثل)تيبو كورتواحمد بن عيسى بن سلمان آل خليفةجسم الإنسانفهد بن مقرن بن عبد العزيز آل سعودالزبير بن العوامحجر كريمجماعحسن المصري (فيلم)دولة فلسطينولايات الجزائرعبد العزيز بن تركي بن طلال آل سعودالصحراء الغربيةعبد الرحمن بن فيصل بن تركي آل سعودالأردنالنادي الإسماعيليحليمة بولندالحفرة (مسلسل)مهرة بنت محمد بن راشد ال مكتومالوليد بن طلال بن عبد العزيز آل سعودنادي الوحدة (السعودية)كيليان مبابيتونسيونيوآل نهيانالحسن بن عليعبد العزيز آل سعودصحيح البخارينادي جيروناسجلات وإحصائيات دوري أبطال أوروباعبد الله بن عبد العزيز آل سعودترجمةأفغانستانطاقة شمسيةالقمرقائمة محطات مترو القاهرةمعتصم النهارتوماس إديسونشم النسيمعبد الفتاح البرهان🡆 More