Module:ਮੁੱਖ ਲੇਖ
This module produces a link to a main article or articles. It implements the {{main}} template. Normally, it produces a link like "Main article: A". If used in the category namespace, it produces a link like "The main article for this category is A". It is possible to specify multiple articles, and in this case plural wording is used automatically. If the first link is not an article, the module uses the wording "Main page" instead of "Main article".
Usage from wikitext
[edit]This module cannot be accessed directly from #invoke. Instead, it can only be used through the {{main}} template. Please see the template page for documentation.
Usage from other Lua modules
[edit]Load the module:
local mMain = require('Module:ਮੁੱਖ ਲੇਖ')
You can then use the _main function like this:
mMain._main(options, ...)
The parameters following options are a list of link/display tables, used to generate the links. The first value in each table is the link, and is required. The second value in each table is the display value, and is optional. Category or file links are automatically escaped using the colon trick. If a link includes a section name, and no display value is set, links are automatically formatted as page § section, rather than the MediaWiki default of page#section.
The options table can be used to configure the function's output. At current, the only option available is "selfref", which is used when the output is a self-reference to Wikipedia. to set this option, use {selfref = true}
. (See the {{selfref}} template for more details on self-references.)
- Example 1
mMain._main(nil, {'A'})
Produces:
<div class="hatnote relarticle mainarticle">ਮੁੱਖ ਆਰਟੀਕਲ: [[A]]</div>
Displays as:
- Example 2
mMain._main(nil, {'Wikipedia:Categorization'}, {'Help:Category'}, {'Category:Wikipedia categories'})
Produces:
<div class="hatnote relarticle mainarticle">Main pages: [[Wikipedia:Categorization]], [[Help:Category]] and [[:Category:Wikipedia categories]]</div>
Displays as:
- Example 3
mMain._main(nil, {'A', 'the letter "A"'}, {'B', 'the letter "B"'}, {'C', 'the letter "C"'})
Produces:
<div class="hatnote relarticle mainarticle">ਮੁੱਖ ਆਰਟੀਕਲs: [[A|the letter "A"]], [[B|the letter "B"]] and [[C|the letter "C"]]</div>
Displays as:
- Example 4
mMain._main({selfref = true}, {'Wikipedia:Verifiability#Burden'})
Produces:
<div class="hatnote relarticle mainarticle selfref">ਮੁੱਖ ਆਰਟੀਕਲ: [[Wikipedia:Verifiability#Burden|Wikipedia:Verifiability § Burden]]</div>
Displays as:
- Example 5 (if used in the category namespace)
mMain._main(nil, {'A'})
Produces:
<div class="hatnote relarticle mainarticle">The ਮੁੱਖ ਆਰਟੀਕਲ for this [[Wikipedia:Categorization|category]] is [[A]]</div>
Displays as:
Technical details
[edit]This module uses Module:Hatnote to format the hatnote text, Module:TableTools to process the list of links, and Module:Arguments to fetch the arguments from wikitext.
-- This module produces a link to a ਮੁੱਖ ਆਰਟੀਕਲ or articles. It implements the
-- template {{ਮੁੱਖ ਲੇਖ}}.
--
-- If the module is used in category or category talk space, it produces "The
-- ਮੁੱਖ ਆਰਟੀਕਲ for this category is xxx". Otherwise, it produces
-- "ਮੁੱਖ ਆਰਟੀਕਲ: xxx".
--]]
local mHatnote = require('Module:Hatnote')
local mTableTools -- lazily initialise
local mArguments -- lazily initialise
local p = {}
--function p.ਮੁੱਖ ਲੇਖ(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._ਮੁੱਖ ਲੇਖ(options, unpack(pages))
--end
--function p._ਮੁੱਖ ਲੇਖ(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 ਮੁੱਖ ਲੇਖ %ss for this'
.. ' [[Wikipedia:Categorization|category]] are %s'
else
stringToFormat = 'The ਮੁੱਖ ਲੇਖ %s for this'
.. ' [[Wikipedia:Categorization|category]] is %s'
end
else
if isPlural then
stringToFormat = 'ਮੁੱਖ ਲੇਖ %ss: %s'
else
stringToFormat = 'ਮੁੱਖ ਲੇਖ %s: %s'
end
end
local text = string.format(stringToFormat, pagetype, links)
-- Process the options and pass the text to the _rellink function in
-- [[Module:Hatnote]].
options = options or {}
local hnOptions = {
extraclasses = 'relarticle mainarticle',
selfref = options.selfref
}
return mHatnote._hatnote(text, hnOptions)
--end
----return p