Module:Disambiguation
Template:Module rating This module detects if a given page is a disambiguation page.
Usage
{{#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
Import this module, e.g with
<syntaxhighlight lang="lua">
local mDisambiguation = require('Module:Disambiguation')
</syntaxhighlight>
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:
<syntaxhighlight lang="lua">
local isDab = mDisambiguation.isDisambiguation(content) -- returns true or false
</syntaxhighlight>
- (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:
<syntaxhighlight lang="lua">
local isDab = mDisambiguation._isDisambiguationPage(pageName) -- returns true or false
</syntaxhighlight>
- (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%-Number Combination Disambiguation",
"[Ll]etter%-NumberCombDisambig",
"[Mm]il%-unit%-dis",
"[Nn]umberdis",
"[Ss]choold[ai][bs]"
}
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