Module:Disambiguation

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