Module:Main
This template is used on 228000+ pages. To avoid large-scale disruption and unnecessary server load, any changes should first be tested in this template's /sandbox or/testcases subpage, or in your own user space. The tested changes can then be added in one single edit to this template. Please consider discussing any changes on the talk page before implementing them. |
সাঁচ:Module rating সাঁচ:Lua 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
সম্পাদনা কৰক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
সম্পাদনা কৰকLoad the module:
local mMain = require('Module:Main')
You can then use the _main function like this:
mMain._main(args, options)
The args parameter following options are a list of page link strings; if they use custom display values, each string should be preprocessed into a single piped string (e.g. page|display value
). 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 optional options table can be used to configure the function's output. At present, the only option available is "selfref", which is used when the output is a self-reference to Wikipedia. to set this option, use সাঁচ:Code. (See the {{selfref}} template for more details on self-references.)
Example 1
সম্পাদনা কৰকmMain._main({'A'})
Produces:
<div role="note" class="hatnote navigation-not-searchable">Main article: [[|A]]</div>
Displays as:
Example 2
সম্পাদনা কৰকmMain._main({'Wikipedia:Categorization', 'Help:Category', 'Category:Wikipedia categories'})
Produces:
<div role="note" class="hatnote navigation-not-searchable">Main pages: [[Wikipedia:Categorization]], [[সহায়:Category]] and [[শ্ৰেণী:Wikipedia categories]]</div>
Displays as:
Example 3
সম্পাদনা কৰকmMain._main({'A|the letter "A"', 'B|the letter "B"', 'C|the letter "C"'})
Produces:
<div role="note" class="hatnote navigation-not-searchable">Main articles: [[|A|the letter "A"]], [[|B|the letter "B"]] and [[|C|the letter "C"]]</div>
Displays as:
Example 4
সম্পাদনা কৰকmMain._main({'Wikipedia:Verifiability#Burden'}, {selfref = true})
Produces:
<div role="note" class="hatnote navigation-not-searchable selfref">Main article: [[Wikipedia:Verifiability#Burden|Wikipedia:Verifiability § Burden]]</div>
Displays as:
Example 5 (if used in the category namespace)
সম্পাদনা কৰকmMain._main({'A'})
Produces:
<div role="note" class="hatnote navigation-not-searchable">The main article for this [[Wikipedia:Categorization|category]] is [[|A]]</div>
Displays as:
Technical details
সম্পাদনা কৰকThis module uses Module:Hatnote to format the hatnote text, Module:Hatnote list to process the list of links, and Module:Arguments to fetch the arguments from wikitext.
--[[
-- 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
-- "মূল পৃষ্ঠা: xxx".
--]]
local mHatnote = require('Module:Hatnote')
local mHatlist = require('Module:Hatnote list')
local mArguments -- lazily initialise
local p = {}
function p.main(frame)
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['label ' .. k] or args['l' .. k]
local page = display and
string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v
pages[#pages + 1] = page
end
end
if #pages == 0 and mw.title.getCurrentTitle().namespace == 0 then
return mHatnote.makeWikitextError(
'no page names specified',
'Template:Main#Errors',
args.category
)
end
local options = {
selfref = args.selfref
}
return p._main(pages, options)
end
function p._main(args, options)
-- Get the list of pages. If no first page was specified we use the current
-- page name.
local currentTitle = mw.title.getCurrentTitle()
if #args == 0 then args = {currentTitle.text} end
local firstPage = string.gsub(args[1], '|.*$', '')
-- Find the pagetype.
local pageType = mHatnote.findNamespaceId(firstPage) == 0 and 'article' or 'page'
-- Make the formatted link text
list = mHatlist.andList(args, true)
-- Build the text.
local isPlural = #args > 1
local mainForm
local curNs = currentTitle.namespace
if (curNs == 14) or (curNs == 15) then --category/talk namespaces
mainForm = isPlural and
'The main %ss for this [[সহায়:Categories|category]] are %s.'
or
'The main %s for this [[সহায়:Categories|category]] is %s.'
else
mainForm = isPlural and 'Main %ss: %s' or 'Main %s: %s'
end
local text = string.format(mainForm, pageType, list)
-- Process the options and pass the text to the _rellink function in
-- [[Module:Hatnote]].
options = options or {}
local hnOptions = {
selfref = options.selfref
}
return mHatnote._hatnote(text, hnOptions)
end
return p