Module:Disambiguation: Difference between revisions
From Thetacola Wiki
				
				
				Jump to navigationJump to search
				
				
en>MSGJ  add more forms to list  | 
				m 1 revision imported  | 
				
(No difference) 
 | |
Latest revision as of 00:22, 15 August 2022
| Protected | This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. | 
| Warning | This Lua module is used on approximately 214,000 pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them.  | 
This module detects if a given page is a disambiguation page.
Usage[edit source]
{{#invoke:Disambiguation|isDisambiguationPage|Page title}}
- returns 
yesif the page is a disambiguation page, or nothing if the page is not a disambiguation page 
Examples:
{{#invoke:Disambiguation|isDisambiguationPage|Paris}}→{{#invoke:Disambiguation|isDisambiguationPage|New}}→{{#invoke:Disambiguation|isDisambiguationPage|Black swan (disambiguation)}}→ yes
You can also use magic words like {{SUBJECTPAGENAME}}:
{{#invoke:Disambiguation|isDisambiguationPage|{{SUBJECTPAGENAME}}}}→ yes
Usage within Lua modules[edit source]
Import this module, e.g with
local mDisambiguation = require('Module:Disambiguation')
Then you can use the functions isDisambiguation and _isDisambiguationPage.
If you have already have a Title object for the page to check, get the content using the title object's getContent() method, and pass that into isDisambiguation:
local isDab = mDisambiguation.isDisambiguation(content) -- returns true or false
- (where 
contentis a string, the wikitext content of page to check) 
If you don't otherwise need the title, you can pass in the page name to _isDisambiguationPage:
local isDab = mDisambiguation._isDisambiguationPage(pageName) -- returns true or false
- (where 
pageNameis a string, the name of page to check) 
local p = {}
local mRedirect = require('Module:Redirect')
local disambigTemplates = {
	"[Dd][Aa][Bb]",
	"[Dd]big",
	"[Dd]is",
	"[Dd]isambiguation",
	"[%w_%s]-%f[%w][Dd]isam[%w]-",
	"[Gg]eodis",
	"[Hh][Nn][Dd][Ii][Ss]",
	"[Hh]ndisambig",
	"[Ll]etter%-[Nn]umber [Cc]ombination [Dd]isambiguation",
	"[Ll]etter%-NumberCombDisambig",
	"[Mm]il%-unit%-dis",
	"[Nn]umberdis",
	"[Ss]choold[ai][bs]",
	"[Mm]il-unit-disambig",
	"[Mm]ilitary unit disambiguation",
	"[Gg]eo-dis",
	"[Gg]eodisambig",
	"[Dd]isambig[Gg]eo",
	"[Dd]isambig[GN]",
	"[Dd]isambigNm",
	"[Dd]isambigName",
	"[Ss]urname",
	"[Ss]urnames",
	"[Ss]pecies Latin name disambiguation",
	"[Ss]peciesLatinNameDisambig",
	"[Ll]atinNameDisambig",
	"[Mm]athematical disambiguation",
	"[Mm]athematics disambiguation",
	"[Mm]athdab",
	"[Mm]ath dab",
	"[Rr]oad disambiguation",
	"[Rr]oaddis",
}
p.isDisambiguation = function(content)
	-- false if there is no content
	if content == nil then return false end
	
	-- redirects are not disambiguation pages
	if mRedirect.getTargetFromText(content) ~= nil then return false end
	
	-- check for disambiguation templates in the content
	for _i, v in ipairs(disambigTemplates) do
		if mw.ustring.find(content, "{{%s*".. v .. "%s*%f[|}]") ~= nil then
			return true
		end
	end
	
	-- check for magic word
	if mw.ustring.find(content, "__DISAMBIG__", 1, true) ~= nil then
		return true
	end
	
	return false
end
p._isDisambiguationPage = function(page)
	-- Look "(disambiguation)" in the title
	if mw.ustring.find(page, "(disambiguation)",0,true) ~= nil then
		return true;
	end
	-- Look for disamiguation template in page content
	local title = mw.title.new(page)
	if not title then return false end
	local content = title:getContent()
	return p.isDisambiguation(content)
end
-- Entry points for templates
p.isDisambiguationPage = function(frame)
	local title = frame.args[1]
	return p._isDisambiguationPage(title) and "yes" or ""
end
return p