Jump to content
Wikipedia The Free Encyclopedia

Module:Disambiguation/sandbox

From Wikipedia, the free encyclopedia
This is the module sandbox page for Module:Disambiguation (diff).
See also the companion subpage for test cases (run).
Module documentation[view] [edit] [history] [purge]
[画像:Ready for use] This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing.
[画像:Protected] This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing.
[画像:Warning] This Lua module is used in system messages, and on approximately 215,000 pages.
Changes to it can cause immediate changes to the Wikipedia user interface.
To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Please discuss changes on the talk page before implementing them.
This module depends on the following other modules:

This module detects if a given page is a disambiguation page.

Usage

[edit ]
{{#invoke:Disambiguation|isDisambiguationPage|Page title}}
returns yes if 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}} → yes
  • {{#invoke:Disambiguation|isDisambiguationPage|Black swan (disambiguation)}} → yes

You can also use magic words like {{SUBJECTPAGENAME }}:

  • {{#invoke:Disambiguation|isDisambiguationPage|{{SUBJECTPAGENAME}}}} → yes

Usage within Lua modules

[edit ]

Import this module, e.g with

local mDisambiguation = require('Module:Disambiguation')

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:

local isDab = mDisambiguation.isDisambiguation(content) -- returns true or false
(where content is 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:

local isDab = mDisambiguation._isDisambiguationPage(pageName) -- returns true or false
(where pageName is a string, the name of page to check)

Internal operations

[edit ]
  • Although set index articles are treated by some templates as disambiguation pages, they are actually considered a special type of list and are not treated as disambiguation pages by this module
  • As this module relies on detecting templates with names like "disambiguation" in the article text, it is subject to false positives by templates such as {{italic disambiguation }}. These templates should be added to the falsePositives list in the code to exclude them.
  • The list of disambiguation templates is maintained at Module:Disambiguation/templates.
The above documentation is transcluded from Module:Disambiguation/doc. (edit | history)
Editors can experiment in this module's sandbox (edit | diff) and testcases (edit | run) pages.
Add categories to the /doc subpage. Subpages of this module.
 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 = {}
	local activecontent = string.gsub(content, "<!%-%-.-%-%->", "")
	activecontent = string.gsub(activecontent, "<nowiki>.-</nowiki>", "")
	for template in string.gmatch(activecontent, "{{%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

AltStyle によって変換されたページ (->オリジナル) /