Module:Disambiguation

local p = {} local mRedirect = require('Module:Redirect') local disambiguationTemplates = mw.loadData('Module:Disambiguation/templates')

local function capitalize(s) -- This function only works on ASCII strings. If your wiki has -- disambiguation templates that use Unicode strings, use the commented-out -- line instead. Enwiki uses ASCII string manipulation only here to improve -- performance. return s:sub(1, 1):upper .. s:sub(2, -1) -- return mw.ustring.upper(mw.ustring.sub(1, 1)) .. mw.ustring.sub(2, -1) end

local function isDisambiguationTemplate(template) return disambiguationTemplates[capitalize(template)] or false end

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 local templateNames = {} for template in string.gmatch(content, "{{%s*([^|}]-)%s*[|}]") do		if isDisambiguationTemplate(template) then return true end end

-- check for magic word if string.find(content, "__DISAMBIG__", 1, true) ~= nil then return true end

return false end

p._isDisambiguationPage = function(page) -- Look "(disambiguation)" in the title if string.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