Module:Disambiguation: Difference between revisions
w>MSGJ (deploy new version, code by User:Mr. Stradivarius) |
m (1 revision imported) |
Latest revision as of 21:10, 22 January 2024
Documentation for this module may be created at Module:Disambiguation/doc
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