Editing Module:Main
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 4: | Line 4: | ||
-- | -- | ||
-- If the module is used in category or category talk space, it produces "The | -- If the module is used in category or category talk space, it produces "The | ||
− | -- main article for this category is xxx. | + | -- main article for this category is xxx". Otherwise, it produces |
-- "Main article: xxx". | -- "Main article: xxx". | ||
--]] | --]] | ||
local mHatnote = require('Module:Hatnote') | local mHatnote = require('Module:Hatnote') | ||
− | local | + | local mTableTools -- lazily initialise |
local mArguments -- lazily initialise | local mArguments -- lazily initialise | ||
+ | |||
local p = {} | local p = {} | ||
function p.main(frame) | function p.main(frame) | ||
+ | mTableTools = require('Module:TableTools') | ||
mArguments = require('Module:Arguments') | mArguments = require('Module:Arguments') | ||
local args = mArguments.getArgs(frame, {parentOnly = true}) | local args = mArguments.getArgs(frame, {parentOnly = true}) | ||
Line 19: | Line 21: | ||
for k, v in pairs(args) do | for k, v in pairs(args) do | ||
if type(k) == 'number' then | if type(k) == 'number' then | ||
− | local display = | + | local display = args['l' .. tostring(k)] |
− | local page = | + | local page = {v, display} |
− | + | pages[k] = page | |
− | pages[ | ||
end | end | ||
end | end | ||
− | + | pages = mTableTools.compressSparseArray(pages) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
local options = { | local options = { | ||
selfref = args.selfref | selfref = args.selfref | ||
} | } | ||
− | return p._main(pages | + | return p._main(options, unpack(pages)) |
end | end | ||
− | function p._main( | + | function p._main(options, ...) |
-- Get the list of pages. If no first page was specified we use the current | -- Get the list of pages. If no first page was specified we use the current | ||
-- page name. | -- page name. | ||
+ | local pages = {...} | ||
local currentTitle = mw.title.getCurrentTitle() | local currentTitle = mw.title.getCurrentTitle() | ||
− | if | + | 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. | -- Find the pagetype. | ||
− | local | + | local firstPageNs = mHatnote.findNamespaceId(firstPage) |
+ | local pagetype = firstPageNs == 0 and 'article' or 'page' | ||
+ | |||
-- Make the formatted link text | -- Make the formatted link text | ||
− | + | local links = mHatnote.formatPageTables(unpack(pages)) | |
+ | links = mw.text.listToText(links) | ||
+ | |||
-- Build the text. | -- Build the text. | ||
− | local isPlural = # | + | local isPlural = #pages > 1 |
− | local | + | local currentNs = currentTitle.namespace |
− | + | local isCategoryNamespace = currentNs - currentNs % 2 == 14 | |
− | + | local stringToFormat | |
− | + | if isCategoryNamespace then | |
− | 'The main %ss for this [[ | + | if isPlural then |
− | + | stringToFormat = 'The main %ss for this' | |
− | 'The main %s for this [[ | + | .. ' [[Wikipedia:Categorization|category]] are %s' |
+ | else | ||
+ | stringToFormat = 'The main %s for this' | ||
+ | .. ' [[Wikipedia:Categorization|category]] is %s' | ||
+ | end | ||
else | else | ||
− | + | if isPlural then | |
+ | stringToFormat = 'Main %ss: %s' | ||
+ | else | ||
+ | stringToFormat = 'Main %s: %s' | ||
+ | end | ||
end | end | ||
− | local text = string.format( | + | local text = string.format(stringToFormat, pagetype, links) |
+ | |||
-- Process the options and pass the text to the _rellink function in | -- Process the options and pass the text to the _rellink function in | ||
-- [[Module:Hatnote]]. | -- [[Module:Hatnote]]. | ||
options = options or {} | options = options or {} | ||
local hnOptions = { | local hnOptions = { | ||
+ | extraclasses = 'relarticle mainarticle', | ||
selfref = options.selfref | selfref = options.selfref | ||
} | } |