Module:Ns has subpages/sandbox
Appearance
![]() | This is the module sandbox page for Module:Ns has subpages (diff). |
![]() | This Lua module is used in system messages, and on approximately 3,390,000 pages, or roughly 5% of all 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 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. |
![]() | 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. |
![]() | This module can only be edited by administrators because it is transcluded onto one or more cascade-protected pages. |
This module finds whether a given namespace can have subpages.
Usage
From wikitext
From wikitext this module must be used via the {{ns has subpages}} template. Please see the template page for documentation.
From Lua
Usually Lua modules should use mw.site.namespaces[namespace].hasSubpages
rather than this module. But if you have a good reason, it can be accessed like this:
Load the module:
local mNsHasSubpages = require('Module:Ns has subpages')
The subpage information can be found with the ._main function:
mNsHasSubpages._main(ns, frame)
- ns is the namespace name, number, or a page name. It defaults to the current namespace.
- frame is a frame object with which we can call frame:callParserFunction if necessary. This is optional, and intended for internal use.
-- This module implements [[Template:Ns has subpages]].
-- While the template is fairly simple, this information is made available to
-- Lua directly, so using a module means that we don't have to update the
-- template as new namespaces are added.
local p = {}
function p._main(ns, frame)
local nsData -- The subtable of mw.site.namespaces for the target namespace
-- First check to see if the namespace we were passed is a valid namespace
-- number or namespace name.
if ns then
nsData = mw.site.namespaces[ns]
end
-- If the namespace wasn't valid, assume we were passed a page name. We find
-- the namespace from the page's title object, or use the current title if
-- we weren't passed a namespace.
if not nsData then
local title
if ns then
title = mw.title.new(ns)
else
title = mw.title.getCurrentTitle()
end
if title then
nsData = mw.site.namespaces[title.namespace]
end
end
-- If we found a valid namespace, return a boolean, otherwise return nil.
if nsData then
return nsData.hasSubpages
else
return nil
end
end
function p.main(frame)
local ns = frame:getParent().args[1]
if ns then
ns = ns:match('^%s*(.-)%s*$') -- trim whitespace
ns = tonumber(ns) or ns
end
local hasSubpages = p._main(ns, frame)
return hasSubpages and 'yes' or ''
end
return p