Changes

Jump to navigation Jump to search
m
1 revision imported
Line 1: Line 1: −
-- This module implements [[Template:Ns has subpages]].
+
{{<includeonly>safesubst:</includeonly>#invoke:Ns has subpages|main}}<noinclude>
-- While the template is fairly simple, this information is made available to
+
{{documentation}}
-- Lua directly, so using a module means that we don't have to update the
+
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
-- template as new namespaces are added.
+
</noinclude>
 
  −
local p = {}
  −
 
  −
function p._main(ns, frame)
  −
-- Get the current namespace if we were not passed one.
  −
if not ns then
  −
ns = mw.title.getCurrentTitle().namespace
  −
end
  −
 
  −
-- Look up the namespace table from mw.site.namespaces. This should work
  −
-- for a majority of cases.
  −
local nsTable = mw.site.namespaces[ns]
  −
 
  −
-- Try using string matching to get the namespace from page names.
  −
-- Do a quick and dirty bad title check to try and make sure we do the same
  −
-- thing as {{NAMESPACE}} in most cases.
  −
if not nsTable and type(ns) == 'string' and not ns:find('[<>|%[%]{}]') then
  −
local nsStripped = ns:gsub('^[_%s]*:', '')
  −
nsStripped = nsStripped:gsub(':.*$', '')
  −
nsTable = mw.site.namespaces[nsStripped]
  −
end
  −
 
  −
-- If we still have no match then try the {{NAMESPACE}} parser function,
  −
-- which should catch the remainder of cases. Don't use a mw.title object,
  −
-- as this would increment the expensive function count for each new page
  −
-- tested.
  −
if not nsTable then
  −
frame = frame or mw.getCurrentFrame()
  −
local nsProcessed = frame:callParserFunction('NAMESPACE', ns)
  −
nsTable = nsProcessed and mw.site.namespaces[nsProcessed]
  −
end
  −
  −
return nsTable and nsTable.hasSubpages
  −
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
 

Navigation menu