If you find this page useful and would like to be notified of changes made to this page, start by inputting your email below.
powered by ChangeDetection
Documentation for this module may be created at Module:Main/doc
--[[ -- This module produces a link to a main article or articles. It implements the -- template {{main}}. -- -- If the module is used in category or category talk space, it produces "The -- main article for this category is xxx". Otherwise, it produces -- "Main article: xxx". --]] local mHatnote = require('Module:Hatnote') local mTableTools -- lazily initialise local mArguments -- lazily initialise local p = {} function p.main(frame) mTableTools = require('Module:TableTools') mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame, {parentOnly = true}) local pages = {} for k, v in pairs(args) do if type(k) == 'number' then local display = args['l' .. tostring(k)] local page = {v, display} pages[k] = page end end pages = mTableTools.compressSparseArray(pages) local options = { selfref = args.selfref } return p._main(options, unpack(pages)) end function p._main(options, ...) -- Get the list of pages. If no first page was specified we use the current -- page name. local pages = {...} local currentTitle = mw.title.getCurrentTitle() local firstPageTable = pages[1] local firstPage if firstPageTable then firstPage = firstPageTable[1] else firstPage = currentTitle.text firstPageTable = {firstPage} pages[1] = firstPageTable end -- Find the pagetype. local firstPageNs = mHatnote.findNamespaceId(firstPage) local pagetype = firstPageNs == 0 and 'article' or 'page' -- Make the formatted link text local links = mHatnote.formatPageTables(unpack(pages)) links = mw.text.listToText(links) -- Build the text. local isPlural = #pages > 1 local currentNs = currentTitle.namespace local isCategoryNamespace = currentNs - currentNs % 2 == 14 local stringToFormat if isCategoryNamespace then if isPlural then stringToFormat = 'The main %ss for this' .. ' [[wikipedia:Wikipedia:Categorization|category]] are %s' else stringToFormat = 'The main %s for this' .. ' [[wikipedia:Wikipedia:Categorization|category]] is %s' end else if isPlural then stringToFormat = 'Main %ss: %s' else stringToFormat = 'Main %s: %s' end end local text = string.format(stringToFormat, pagetype, links) -- Process the options and pass the text to the _rellink function in -- [[wikipedia:Module:Hatnote|Module:Hatnote]]. options = options or {} local hnOptions = { extraclasses = 'relarticle mainarticle', selfref = options.selfref } return mHatnote._hatnote(text, hnOptions) end return p