Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Humanipedia
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Module:Category disambiguation
Module
Discussion
English
Read
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local concat = table.concat local insert = table.insert local makeTitle = mw.title.makeTitle local messageBox = require("Module:Message box").main local nowiki = mw.text.nowiki local pagesInCategory = mw.site.stats.pagesInCategory local remove = table.remove local sort = table.sort local trim = mw.text.trim local yesno = require("Module:Yesno") local title = mw.title.getCurrentTitle() local namespace = title.namespace local title_text = title.text local p = {} function p.main(frame) local args local len, needs_fixing = 0, {} -- Documentation example. if namespace == 10 and title_text:match("Category disambiguation") then args = { "the bird genus", "Eremophila (bird)", "the plant genus", "Eremophila (plant)" } len = 4 -- Otherwise, process input arguments. else -- Produce a new args table, to get the actual length. -- Trim input arguments, and add various maintenance warnings as needed. args = {} local raw_args = (frame:getParent() or frame).args for k, v in pairs(raw_args) do v = trim(v) if type(k) == "number" then if v == "" then insert(needs_fixing, "Parameter " .. k .. " is blank.") v = "{{{" .. k .. "}}}" end len = k > len and k or len end args[k] = v end -- Number of parameters should be even. local orig_len = len if len % 2 == 1 then -- Don't give a blank parameter warning if the template call ends "|}}". if args[len] == "{{{" .. len .. "}}}" then args[len] = nil len = len - 1 remove(needs_fixing) -- Otherwise we need a blank final parameter for the missing category. else len = len + 1 end end if len < 4 then insert(needs_fixing, "Should specify at least 2 categories.") end -- Fill out any missing parameters, but stop inputs like {{Category disambiguation|10000=foo}} causing a cascade of warnings. local missing = 0 for i = 1, len do if not args[i] then insert(needs_fixing, "Parameter " .. i .. " not given.") args[i] = "{{{" .. i .. "}}}" missing = missing + 1 if missing == 10 then error("Large number of missing parameters between 1 and " .. orig_len .. " (the highest specified parameter)") end end end end local list = {} for i = 2, len, 2 do local topic, cat = args[i - 1], args[i] local cat_title = makeTitle(14, cat) -- Warn if the category isn't valid (e.g. "{" isn't a valid category name). if not cat_title then insert(needs_fixing, nowiki(cat) .. " is not a valid category title.") end insert(list, "* For " .. topic .. ", see '''[[:" .. (cat_title and cat_title.prefixedText or "Category:" .. cat) .. "]].'''") -- Warn if the category is a redlink. if cat_title and not (args.allowredlink or cat_title:getContent()) then insert(needs_fixing, cat_title.prefixedText .. " is a redlink.") end end local output = messageBox("cmbox", { type = "content", image = "[[File:Disambig gray.svg|50px]]", text = "'''This category is not in use because it has an ambiguous title.'''" .. frame:expandTemplate{ title = "Plainlist", args = { concat(list, "\n"), style = "margin-left:1.6em;" } } .. "'''Note:''' This category page should be empty. All entries should be recategorized under one of the above categories or an appropriate subcategory." }) -- Add maintenance warnings if necessary. if #needs_fixing > 0 then sort(needs_fixing) output = output .. messageBox("cmbox", { type = "style", text = frame:expandTemplate{ title = "Template link", args = { "Category disambiguation" } } .. " has the following issues:" .. frame:expandTemplate{ title = "Plainlist", args = { "*" .. concat(needs_fixing, "\n*"), style = "margin-left:1.6em;" } } }) end -- Only add behaviour switches and categories if in the category namespace. if namespace == 14 then output = output .. "__DISAMBIG__" .. "__EXPECTUNUSEDCATEGORY__" .. "[[Category:Disambiguation categories]]" .. "[[Category:All disambiguation pages]]" .. (#needs_fixing > 0 and "[[Category:Wikipedia category-disambiguation box parameter needs fixing|β" .. title_text .. "]]" or "") .. (pagesInCategory(title_text) > 0 and "[[Category:Non-empty disambiguation categories]]" or "") elseif not yesno(args.nocat, true) then output = output .. frame:expandTemplate{ title = "Incorrect namespace", args = { "category" } } end return output end return p
Summary:
Please note that all contributions to Humanipedia may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Humanipedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Error
(
edit
)
Template:High-use
(
edit
)
Template:Module other
(
edit
)
Template:Module rating
(
edit
)
Template:Ombox
(
edit
)
Template:Pp
(
edit
)
Template:Protection padlock
(
edit
)
Template:Template link
(
edit
)
Template:Tl
(
edit
)
Module:Category disambiguation/doc
(
edit
)
Module:Error
(
edit
)
Module:File link
(
edit
)
Module:Message box
(
edit
)
Module:Protection banner
(
edit
)