Editing Module:Main

Jump to: navigation, search

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." Otherwise, it produces
+
-- 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 mHatlist = require('Module:Hatnote list')
+
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 = args['label ' .. k] or args['l' .. k]
+
local display = args['l' .. tostring(k)]
local page = display and
+
local page = {v, display}
string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v
+
pages[k] = page
pages[#pages + 1] = page
 
 
end
 
end
 
end
 
end
if #pages == 0 and mw.title.getCurrentTitle().namespace == 0 then
+
pages = mTableTools.compressSparseArray(pages)
return mHatnote.makeWikitextError(
 
'no page names specified',
 
'Template:Main#Errors',
 
args.category
 
)
 
end
 
 
local options = {
 
local options = {
 
selfref = args.selfref
 
selfref = args.selfref
 
}
 
}
return p._main(pages, options)
+
return p._main(options, unpack(pages))
 
end
 
end
  
function p._main(args, options)
+
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 #args == 0 then args = {currentTitle.text} end
+
local firstPageTable = pages[1]
local firstPage = string.gsub(args[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 pageType = mHatnote.findNamespaceId(firstPage) == 0 and 'article' or 'page'
+
local firstPageNs = mHatnote.findNamespaceId(firstPage)
 +
local pagetype = firstPageNs == 0 and 'article' or 'page'
 +
 
 
-- Make the formatted link text
 
-- Make the formatted link text
list = mHatlist.andList(args, true)
+
local links = mHatnote.formatPageTables(unpack(pages))
 +
links = mw.text.listToText(links)
 +
 
 
-- Build the text.
 
-- Build the text.
local isPlural = #args > 1
+
local isPlural = #pages > 1
local mainForm
+
local currentNs = currentTitle.namespace
local curNs = currentTitle.namespace
+
local isCategoryNamespace = currentNs - currentNs % 2 == 14
if (curNs == 14) or (curNs == 15) then --category/talk namespaces
+
local stringToFormat
mainForm = isPlural and
+
if isCategoryNamespace then
'The main %ss for this [[Help:Categories|category]] are %s.'
+
if isPlural then
or
+
stringToFormat = 'The main %ss for this'
'The main %s for this [[Help:Categories|category]] is %s.'
+
.. ' [[Wikipedia:Categorization|category]] are %s'
 +
else
 +
stringToFormat = 'The main %s for this'
 +
.. ' [[Wikipedia:Categorization|category]] is %s'
 +
end
 
else
 
else
mainForm = isPlural and 'Main %ss: %s' or 'Main %s: %s'
+
if isPlural then
 +
stringToFormat = 'Main %ss: %s'
 +
else
 +
stringToFormat = 'Main %s: %s'
 +
end
 
end
 
end
local text = string.format(mainForm, pageType, list)
+
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
 
}
 
}

Please note that all contributions to All About Ayrshire may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see All About Ayrshire:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)